使用getopt的命令行选项和参数

时间:2011-07-03 11:33:02

标签: python command-line arguments getopt

我正在尝试在python中编写一段代码,以使用getopt模块获取命令行选项和参数。 这是我的代码:

import getopt
import sys

def usage ():
    print('Usage')

def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'xy:')
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit()

    for o,a in opts:
        if o in ("-x", "--xxx"):
            print(a)
        elif o in ("-y", "--yyy"):
            print(a)
        else:
            usage()
            sys.exit()

if __name__ == "__main__":
    main()

问题在于我无法读取选项x的参数,但我可以阅读y的参数。我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:11)

尝试getopt.getopt(sys.argv[1:], 'x:y:')

http://docs.python.org/library/getopt.html

  

解析命令行选项和   参数列表。 args是争论的焦点   要解析的列表,没有前导   参考正在运行的程序。   通常,这意味着sys.argv [1:]。   options是选项字符串   脚本想要的字母   认识到,需要的选项   一个后跟冒号的参数(':';   即,与Unix相同的格式   getopt()使用)。

答案 1 :(得分:0)

如果您想读取参数,则该选项旁边应带有“:”,很少有不需要参数的选项,例如“ help”和“ verbose”,不需要“:”接着。

import getopt
import sys

def usage ():
    print('Usage')

def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], 'x:y:h', ['xxx=', 'yyy=', 'help='])
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit()

    for opt,arg in opts:
        if opt in('-h', '--help'):
            usage()
            sys.exit( 2 )
        elif opt in ('-x', '--xxx'):
            print(arg)
        elif opt in ('-y', '--yyy'):
            print(arg)
        else:
            usage()
            sys.exit()

if __name__ == "__main__":
    main()