我在使用 argparse 时遇到了一些问题。我想有一组可以在命令行上定义的名称,这将影响程序的行为。我尝试了以下代码段:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("allon", action='store_true', default = False,
help="Toggles all output pins to ON.")
parser.add_argument("alloff",action='store_true',
help="Toggles all output pins to OFF.")
parser.add_argument("cont", action='store_true',
help="Toggles all output pins continously on and off.")
args = parser.parse_args()
if args.allon:
do_allon()
elif args.alloff:
do_alloff()
....
但代码的行为超出了预期。我不想对这些选项使用'--',因为我想调用我的代码git status
(没有前导'--')。
首先,如果我在没有参数的情况下调用代码,所有参数都设置为 True,而如果没有给出,我希望它们设置为 False。预期的行为如下:调用时
python code.py
我想要allon, alloff
并被cont
设置为False
, 而当调用为
python code.py alloff
我想要allon
并cont
成为False
而被alloff
设置为True
。
其次,当我打电话给例如python code.py allon
我得到
code.py: error: unrecognized arguments: allon
我根本不明白。我知道如何使用 optparse,但是非常感谢您对 argparse 的帮助以使上述代码段正常工作。
谢谢亚历克斯
PS if 循环只是教育性的,实际上并没有以这种方式实现。