如何用列表/字典传参并保留Python argparse的属性访问语法?
可行,实现方法如下
方法一:直接传入模拟命令行参数的列表
argparse的parse_args()支持手动传入列表来模拟命令行输入,完全不用修改现有args.xxx的属性访问代码。比如:
# 用列表模拟命令行参数:位置参数input、output在前,可选参数--logging在后 custom_args = ["my_input.txt", "my_output.txt", "--logging", "20"] args = parser.parse_args(custom_args) # 原有代码无需改动,依然可以这么用 level = args.logging
方法二:从字典转换为命令行参数列表
如果你的参数是字典格式,可以先把字典转成符合argparse要求的列表格式,再传入parse_args():
param_dict = { "input": "my_input.txt", "output": "my_output.txt", "logging": 20 } # 把字典转成命令行参数列表 arg_list = [] # 位置参数按定义顺序加入列表 arg_list.append(param_dict["input"]) arg_list.append(param_dict["output"]) # 可选参数要带--前缀,再跟参数值 if "logging" in param_dict: arg_list.append("--logging") arg_list.append(str(param_dict["logging"])) # 传入解析器,原有访问逻辑不变 args = parser.parse_args(arg_list)
注意点
- 位置参数(比如你的
input、output)必须严格按照add_argument的定义顺序放在列表最前面,不能加--前缀; - 可选参数需要先写
--参数名,再写参数值;如果是无值的布尔flag(比如--verbose),直接在列表里加"--verbose"就行。
内容的提问来源于stack exchange,提问作者user3716846
相关产品推荐
相关产品推荐

