Python argparse允许组合标志
argparse是否可以像这样解析组合标志:Python argparse允许组合标志,python,command-line-arguments,argparse,Python,Command Line Arguments,Argparse,argparse是否可以像这样解析组合标志: app.py -bcda something 在这种情况下,我希望将某物设置为-a,其余的将存储为True。基本上: app.py -b -c -d -a something 我知道大多数程序都允许这样做,例如,grep-rEw,但是使用argparse做这件事有多难呢?下面是我通过谷歌搜索得到的结果: 几个短选项可以连接在一起,只需使用一个- 前缀,只要只有最后一个选项(或没有)需要 价值: 您可以通过store_const实现这一点: par
app.py -bcda something
在这种情况下,我希望将某物
设置为-a
,其余的将存储为True。基本上:
app.py -b -c -d -a something
我知道大多数程序都允许这样做,例如,
grep-rEw
,但是使用argparse做这件事有多难呢?下面是我通过谷歌搜索得到的结果:
几个短选项可以连接在一起,只需使用一个-
前缀,只要只有最后一个选项(或没有)需要
价值:
您可以通过store_const实现这一点:
parser = argparse.ArgumentParser()
parser.add_argument('-a', action='store_const', const=True, default=False)
parser.add_argument('-b', action='store_const', const=True, default=False)
args = parser.parse_args()
然后,您可以使用-a-b
或-ab
(或-a
,或-b
)从命令行调用它
编辑:如果希望其中一个标志接受参数,则需要将其作为链的最后一项传递。因此,如果
a
接受一个参数,您需要做-bcda一些事情
,正如Chris Barker指出的,答案是使用-bcda
而不是-abcd
。组合是开箱即用的。action='store\u true
更简洁。
parser = argparse.ArgumentParser()
parser.add_argument('-a', action='store_const', const=True, default=False)
parser.add_argument('-b', action='store_const', const=True, default=False)
args = parser.parse_args()