Python 未执行argparse add_argument()标志

Python 未执行argparse add_argument()标志,python,python-2.7,Python,Python 2.7,我试图添加一个名为“flags”的参数,并根据输入的内容对在命令行中输入的标志执行某些操作,但程序并没有对输入的标志执行任何操作 输入的格式必须为:program.py-flag import argparse parser = argparse.ArgumentParser() parser.add_argument('-avgtime', '-avgtemp', '-maxtime', '-maxtemp', nargs='?', dest

我试图添加一个名为“flags”的参数,并根据输入的内容对在命令行中输入的标志执行某些操作,但程序并没有对输入的标志执行任何操作

输入的格式必须为:
program.py-flag

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-avgtime', '-avgtemp', '-maxtime', '-maxtemp',
                        nargs='?', dest='flags')
    args = parser.parse_args()

    if args.flags is not None:
        if args.flags == '-avgtime':
            # print something
        elif args.flags == '-avgtemp':
            # print something
        elif args.flags == '-maxtime':
            # print something
        elif args.flags == '-maxtemp':
            # pint something
    else:
        print "Command Not Executed"

当我输入命令
python program.py-avgtime
时,它只打印“command Not Executed”语句,因为args.flags命名空间为空。

您需要单独声明这些参数,或者在同一个参数下收集它们:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--flags', choices=['avgtime', 'avgtemp', 'maxtime', 'maxtemp'])
args = parser.parse_args()
print(args.flags)
将此代码放入
main.py
并执行:

$ python2.7 main.py --flags maxtemp
maxtemp

请参阅。

我使用
添加互斥组()方法解决了我的问题。方法

“将确保 命令行上存在独占组。“

另外,通过在
add_argument()
方法的参数中将每个标志的值设置为false,并在使用时仅将标志设置为true,我可以确定使用了哪个标志

flags = parser.add_mutually_exclusive_group(required=False)

flags.add_argument('-avgtime', action='store_true', default=False)
flags.add_argument('-avgtemp', action='store_true', default=False)
flags.add_argument('-maxtime', action='store_true', default=False)
flags.add_argument('-maxtemp', action='store_true', default=False)

flag_is_set = args.avgtime or args.avgtemp or args.maxtime or args.maxtemp

if flag_is_set:
    if args.avgtime:
        # print something
    elif args.avgtemp:
        # print something
    elif args.maxtime:
        # print something
    elif args.maxtemp:
        # pint something
else:
    print "Command Not Executed"

谢谢你的回答。我这样做的原因是因为我必须能够以以下格式编写命令:
program.py-flag
。正是由于这个原因,我无法使用选项。
flag\u is\u set
不是没有用吗?@vault否,因为一次只能使用其中一个标志,而flag\u is\u set正在使用,所以我不会多次检查所有标志。好吧,但是如果。。。埃利夫。。。埃利夫。。。埃利夫。。。其他的