argparse 是否可以像这样解析组合标志:
app.py -bcda something
在这种情况下,我希望将 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 something
关于Python argparse 允许组合标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21286203/