Python argparse 可选参数和位置参数之间的大小写不一致
Python argparse case inconsistency between optional and positional arguments
我想知道为什么 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'}
看起来这是一个已知问题。 https://bugs.python.org/issue15125
建议的解决方法:
如果你使用'positional-argument'
,你可以使用getattr()
.
从命名空间中提取它
如果您使用 'positional_argument'
,您可以使用 metavar='positional-argument'
更改它在帮助输出中的显示方式。
我想知道为什么 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'}
看起来这是一个已知问题。 https://bugs.python.org/issue15125
建议的解决方法:
如果你使用
'positional-argument'
,你可以使用getattr()
. 从命名空间中提取它
如果您使用
'positional_argument'
,您可以使用metavar='positional-argument'
更改它在帮助输出中的显示方式。