如何使用getopt捕获两个CLI选项及其参数?

时间:2014-05-02 15:16:04

标签: python command-line-arguments getopt

我试图使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')]

但是我无法找到获得第二个选项参数的方法。 你可以帮帮我吗?感谢。

1 个答案:

答案 0 :(得分:0)

你真的会更好地使用能给你一个参数词典的东西,也许就像docopt一样,但是如果你必须使用getopt,那么你可以去:

>>> opts = [('-o', 'param1'), ('-t', 'table1')]
>>> for a,b in opts:
...     if a == '-t':
...         table = b
>>> print table
table1