【发布时间】:2017-07-27 23:51:28
【问题描述】:
有没有办法让argparse.ArgumentParser 在读取未知选项时不引发异常,而是将所有具有值的未知选项放在字典中,将那些没有值的选项放在列表中?
例如,假设prog.py 的解析器中没有定义任何参数,我传递了两个参数:
./prog.py --foo bar --baz
我想要以下内容:
parsed = parser.parse_args()
vals = parsed.unknown_with_vals
novals = parsed.unknown_without_vals
print(vals)
#{'foo' : 'bar'}
print(novals)
#['baz']
这个可以吗?
【问题讨论】:
-
如果这样调用你希望它做什么?
./prog.py --foo bar baz --quux?字典应该是{"foo": ["bar", "baz"]}吗? this 应该是一个错误吗?baz是否应该被视为位置参数?你基本上是在要求一个全新的参数解析器:我认为一般来说你最好只使用像nargs的 argparse.REMAINDER 值这样的东西来将所有意想不到的东西累积到一个列表中,然后自己处理它:docs.python.org/library/argparse.html#nargs