3

我正在尝试在 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()

问题是我无法读取 option 的参数x,但我可以读取y. 我应该怎么做才能解决这个问题?

4

2 回答 2

11

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

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

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

于 2011-07-03T11:36:37.773 回答
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()
于 2019-01-04T12:24:59.993 回答