我编写了这个程序,使用flag --list提供选项列表。所以,我想使用--list来提供所有选项,而当我使用--list --ex时,我只想提供选项列表的一部分。
这是程序 -
import argparse
import sys
options = {
'external': {
},
'internal': {
}
}
def print_list(value):
l1 = []
l2 = []
for k, v in options.iteritems():
if k == "external":
for opt, val in options["external"].iteritems():
l1.append(opt)
elif k == "internal":
for opt,val in options["internal"].iteritems():
l2.append(opt)
if value == "external":
return l1
elif value == "internal":
return l2
elif value == "all":
return l1 + l2
parser = argparse.ArgumentParser(
description="Testing argparse"
)
parser.add_argument("--list", action = "store_true")
parser.add_argument("--ex", action = "store_true")
parser.add_argument("--in", action = "store_true")
args = parser.parse_args(sys.argv[1:])
if args.list:
val = print_list("all")
for items in val:
print items
if not args.list and args.ex:
parser.error("You need to provide list option")
if args.ex:
val = print_list("external")
for items in val:
print items
所以当我这样做时, - list --ex我得到所有选项,加上外部选项。而当我输入--list --ex时,我只想要外部选项。
提前感谢您的帮助。
答案 0 :(得分:0)
将--list
放在命令行上将args.list
设置为True
,并将--ex
放在命令行中也会args.ex
True
。您的代码检查args.list
并发现它是真的,因此它打印出所有选项。然后它检查args.ex
,它也是True
,因此它打印出外部选项。
答案 1 :(得分:0)
if args.list and args.external:
val = print_list("external")
for items in val:
print items
elif args.list:
val = print_list("all")
for items in val:
print items
我只是对代码进行了一些小改动,并且能够达到我想要的效果,谢谢。