可选和位置参数之间的Python argparse案例不一致

时间:2017-08-08 06:36:25

标签: python argparse

我想知道为什么Python argparse中的可选和位置参数的大小写转换之间的不一致。将'--optional-argument'添加到解析器将命名为'optional_argument',但位置参数将保留positional-argument

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('positional-argument')
parser.add_argument('--optional-argument')
arg_dict = vars(parser.parse_args('Positional --optional-argument Optional'.split()))
print(arg_dict)
# {'positional-argument': 'Positional', 'optional_argument': 'Optional'}

我可以改变我将位置参数添加到解析器的方式,但是不一致性会保留(尽管在不同的地方)

parser.add_argument('positional_argument')
parser.add_argument('--optional-argument')
# {'positional_argument': 'Positional', 'optional_argument': 'Optional'}

1 个答案:

答案 0 :(得分:3)

看起来这是一个已知问题。 https://bugs.python.org/issue15125

建议的解决方法:

  • 如果您使用'positional-argument',则可以使用getattr()从命名空间中提取它。

  • 如果您使用'positional_argument',则可以使用metavar='positional-argument'更改帮助输出中的显示方式。