我是 Python 的初学者。
我想知道 Argparse 和 JSON 是否可以一起使用。说,我有变量 p,q,r
我可以将它们添加到 argparse 作为 -
parser.add_argument('-p','--param1',help='x variable', required=True)
parser.add_argument('-q','--param2',help='y variable', required=True)
parser.add_argument('-r','--param3',help='z variable', required=True)
现在假设我想从 JSON 文件中读取相同的变量,是否可以这样做?所以我可以从命令行或 JSON 文件输入值。
JSON 输入文件 -
{
"testOwner": "my name",
"tests": [
"test1",
"test2",
"test3"
],
"testParameters": {
"test1": {
"param1": "0",
"param2": "20",
"param3" : "True"
},
"test2": {
"param1": "cc"
}
}
}
原文由 Raj 发布,翻译遵循 CC BY-SA 4.0 许可协议
来自
parse_args
的args
命名空间可以转换为字典:JSON 值也在字典中,例如
json_dict
。您可以将选定的值从一个字典复制到另一个字典,或者进行整体规模更新:这样
json_dict
值就会覆盖 argparse 值。如果你想保留两者,你要么需要有不同的参数(键)名称,要么值必须是列表,你可以追加或扩展。这需要做更多的工作,从在
argparse
中使用正确的nargs
值开始。修改后的
parser
产生了一个测试输入:JSON 字符串在解析时 (
json.loads
?) 生成如下字典:我通过将您的显示粘贴到我的 Ipython 会话中来生成此内容,但我认为 JSON 加载程序生成相同的内容
argparse 值可以添加:
在这里,我将其添加为第三个
test
集,(巧合地)从tests
列表中取了一个名字。json_dict['testParameters']['test2']=args_dict
将替换test2
的值。将 args 值添加到“test2”的未定义值的一种方法是:
我使用了这个版本的
update
来优先考虑JSON字典中的’cc’值。