这个问题在某些时候会很奇怪。。。
在添加一个参数后,我试图在解析器中添加选项字符串。
例如
import argparse
p = argparse.ArgumentParser()
p.add_argument(dest = 'myvar')
p._actions[1].option_strings = ['-foo']
p.parse_args('-foo 1')
这个例子不起作用,它说:
: error: the following arguments are required: -foo
尽管我在提供论据。。。
有人知道为什么会发生这种事吗?
有没有办法在add_argument方法之后添加选项字符串?
在查看了argparse的源代码后,我发现您还必须通过它的选项字符串注册操作:
import argparse
p = argparse.ArgumentParser()
p.add_argument(dest = 'myvar')
p._actions[1].option_strings = ['-foo']
# You also need to do this
p._option_string_actions['-foo'] = p._actions[1]
args = p.parse_args(['-foo', '100'])
print('myvar is', args.myvar) # myvar is 1
请注意调用parse_args
时的更改。
我希望这能有所帮助!!