我试图添加一个名为' 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
时,它只打印"命令未执行"声明,因为args.flags命名空间为空。
答案 0 :(得分:1)
您需要单独声明这些参数或在相同的参数下收集它们:
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
请参阅choices。
答案 1 :(得分:0)
我使用add_mutually_exclusive_group()
方法解决了我的问题。 add_mutually_exclusive_group方法
“将确保相互之间只有一个参数 命令行中出现了专属组。“
此外,通过在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"