Python无参数地指定命令行标志

我如何添加一个可选的标志到我的命令行参数?

例如。 所以我可以写

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在这个问题上是不透明的。

正如你所知道的那样,参数w在命令行中的-w之后会有一个值。 如果您只是想通过设置variablesTrueFalse来切换开关,请查看http://docs.python.org/dev/library/argparse.html#action (特别是store_true和store_false)

 parser.add_argument('-w', action='store_true') 

编辑:正如斯文指出的,在这种情况下,默认值是多余的。

添加一个快速的片段,让它准备好执行:

来源: 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 

在将参数添加到parsing器时,action =“store_true”标志将参数的默认值设置为True。 所以,parser.add_argument(' – w',action =“store_true”)应该解决这个错误。

这里有一个快速的方法来做到这一点,除了sys之外不需要任何东西..虽然function是有限的:

flag = "--flag" in sys.argv