问题:不带参数的Python argparse命令行标志
如何在命令行参数中添加可选标志?
例如。所以我可以写
python myprog.py
要么
python myprog.py -w
我试过了
parser.add_argument('-w')
但是我收到一条错误消息说
Usage [-w W]
error: argument -w: expected one argument
我认为这意味着它需要-w选项的参数值。接受旗帜的方式是什么?
我在这个问题上发现http://docs.python.org/library/argparse.html相当不透明。
回答 0
如您所愿,参数w在命令行中的-w之后需要一个值。如果您只是想通过设置变量True
或来翻转开关False
,请访问http://docs.python.org/dev/library/argparse.html#action(特别是store_true和store_false)
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-w', action='store_true')
其中action='store_true'
暗示default=False
。
相反,您可能有action='store_false'
,这意味着default=True
。
回答 1
添加一个快速片段以使其可以执行:
资料来源:myparser.py
import argparse
parser = argparse.ArgumentParser(description="Flip a switch by setting a flag")
parser.add_argument('-w', action='store_true')
args = parser.parse_args()
print args.w
用法:
python myparser.py -w
>> True
回答 2
这是一种快速的方法,sys
尽管功能有限,但除了.. 之外不需要任何其他功能:
flag = "--flag" in sys.argv[1:]
[1:]
如果完整的文件名是 --flag