Argparse添加选项字符串



这个问题在某些时候会很奇怪。。。

在添加一个参数后,我试图在解析器中添加选项字符串。

例如

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时的更改。

我希望这能有所帮助!!

最新更新