问题描述
如何使用getopt以便可以按可能的顺序检查2个参数的每个有效组合?
例如:
try:
opts,args = getopt.getopt(argv,"a:b")
except getopt.GetoptError:
try:
opts,"a:c")
except:
sys.exit(1)
输入例如可以是script.py -a avalue -b bvalue
或script.py -a avalue -c cvalue
。
a和另一个参数的位置也可以颠倒。
但是我只会在执行脚本时得到令人困惑的值
解决方法
首先,您可能想要查看argparse
。入门需要更多的人工阅读,但是它可以做的更多!
对于getopt
,开关始终是可选的,并且始终可以按任何顺序排列。也就是说,如果您这样做
opts,args = getopt.getopt(argv,"a:b:c:")
用户可以按任意顺序给出-a avalue
,-b bvalue
和-c cvalue
,并省略其中的任何一个或全部。
另外,请注意,getopt
不会在参数列表中找到程序名称,这意味着您通常希望传递argv[1:]
。