我试图使python脚本能够同时采用两个选项,如下例所示:
$ python main.py -o param1 -t table1
我希望能够有两种不同的行为;如果没有-t
参数,我希望我的脚本处理我的所有csv表,如果有-t参数,我希望它只处理参数中给出的表。
我使用这样的东西:
import getopt, sys
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], "hs:v:t:", ["help", "start=", "table="])
except getopt.GetoptError as err:
# print help information and exit:
print str(err) # will print something like "option -a not recognized"
usage()
sys.exit(2)
for o, a in opts:
if o == "-v":
verbose = True
elif o in ("-h", "--help"):
usage()
sys.exit()
elif o in ("-s", "--start"):
start = a
else:
assert False, "unhandled option"
# ...
if __name__ == "__main__":
main()
如果我这样做:print opts
我会找到:[('-o', 'param1'), ('-t', 'table1')]
但是我无法找到获得第二个选项参数的方法。 你可以帮帮我吗?感谢。
答案 0 :(得分:0)
你真的会更好地使用能给你一个参数词典的东西,也许就像docopt一样,但是如果你必须使用getopt,那么你可以去:
>>> opts = [('-o', 'param1'), ('-t', 'table1')]
>>> for a,b in opts:
... if a == '-t':
... table = b
>>> print table
table1