Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python argparse允许组合标志_Python_Command Line Arguments_Argparse - Fatal编程技术网

Python 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

argparse是否可以像这样解析组合标志:

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()