gpt4 book ai didi

python - 如何将 kwargs 传递给 argparse

转载 作者:行者123 更新时间:2023-12-04 10:22:51 25 4
gpt4 key购买 nike

我需要通过命令行将字典传递给 python 模块。我还没有找到让 Python 合作的方法。以下是我想要完成的一个非常简单的示例。这会产生以下错误 TypeError: _get_positional_kwargs() missing 1 required positional argument: 'dest'
。将 dest 参数添加到 add_argument 行会导致 TypeError: __init__() got an unexpected keyword argument 'kwargs',表明 argparse 可能根本不采用字典的可悲可能性作为论据。 pickle 文件真的是从命令行调用来回传递字典的唯一选择吗?

def run(**kwargs):
for i in kwargs.items():
print(f'{i}: {kwargs[i]}')
# ...some code to manipulate the dictionary
return kwargs


if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="Test script")
parser.add_argument(kwargs='**', description='A dictionary to be manipulated and returned')
args = parser.parse_args()
x = run(args)
pass

附加信息 - 我知道我可以使用包含以空格分隔的参数的命令行将列表传递给 *nargs 参数,但我需要做一些事情类似于字典。

更新 - 什么有效:基于@chepner 的有用输入,我能够让它与他在回答中提到的 json 解决方案一起使用。在我的 Windows 平台上,我确实必须从字典字符串中删除所有空格,并且在最终的命令行字符串中需要转义字符。

{\"this\":1,\"is\":2,\"a\":5,\"dictionary\":7}

最佳答案

参数是字符串,句点。您要传递的是一个包含编码 dict 的字符串,例如使用 JSON。

import argparse
import json


parser = argparse.ArgumentParser()
parser.add_argument('data', type=json.loads)

args = parser.parse_args()

如果你用类似的东西运行你的脚本

myscript '{"foo": 3, "bar": "hello"}'

然后 args.data["foo"] == 3args.data["bar"] == "hello"

关于python - 如何将 kwargs 传递给 argparse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60760678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com