Python argparse可选参数和位置参数之间的大小写不一致
我想知道为什么Python的Python argparse可选参数和位置参数之间的大小写不一致,python,argparse,Python,Argparse,我想知道为什么Python的argparse中可选参数和位置参数的大小写转换不一致。将'--optional argument'添加到解析器将被命名为'optional\u argument',但位置参数将保持为位置参数 import argparse parser = argparse.ArgumentParser() parser.add_argument('positional-argument') parser.add_argument('--optional-argument') ar
argparse
中可选参数和位置参数的大小写转换不一致。将'--optional argument'
添加到解析器将被命名为'optional\u 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'}
我可以改变向解析器添加位置参数的方式,但不一致性仍然存在(尽管在不同的位置)
看来这是一个已知的问题 建议的解决办法:
- 如果使用
,则可以使用'positional-argument'
从命名空间中提取它getattr()
- 如果使用
,可以使用“位置参数”
更改它在帮助输出中的显示方式metavar='positional-argument'
参数访问值。可选的\u参数
(使用有效的Python属性名称)。您通常可以更自由地选择位置dest
。如果您使用metavar
,您的用户甚至看不到帮助中的dest
。
parser.add_argument('positional_argument')
parser.add_argument('--optional-argument')
# {'positional_argument': 'Positional', 'optional_argument': 'Optional'}