【发布时间】:2020-05-27 05:43:28
【问题描述】:
我想做这样的事情:
usage: myprogpy [-su | -re STRING | -reg]
如何检查给定了哪些参数(su、re、reg),对于re,如何获取给定的字符串?
ap = argparse.ArgumentParser(prog="myprog.py")
method_group = ap.add_mutually_exclusive_group()
method_group.add_argument('-su', '--speedup', action='store_true', dest='method')
method_group.add_argument('-re', '--relative', action='store_true', dest='method')
method_group.add_argument('-reg', '--regular', action='store_true', dest='method')
args = ap.parse_args()
if args.method == "speedup":
speedup()
elif args.method == "relative":
relative(string_value) # How do I get the string value???
elif args.method == "regular":
regular()
是否可以在method 中分配true/false 值,以及将字符串存储在不同的变量中?还有其他方法吗?
【问题讨论】:
-
如果三个选项中都没有,你希望
args.method是什么? -
@chepner 嗯,可能只是一个默认值
-
如果你想提供一个字符串,你为什么用
store_true代替--re?您需要默认的store。现在不要摆弄argparse中的dest。之后测试args.su、args.re和args.reg。这样您就不会在解析过程中丢失任何信息。 -
一个组只是阻止用户使用多个参数,他们仍然可以使用自己的默认目标。事实上,使用常见的
dest会减少您获得的信息。