Python getopt将选项识别为参数

时间:2015-01-24 14:53:00

标签: python getopt

我正在尝试解析运行Python脚本时的一些选项。

def main(argv):
    try:
        opts, args = getopt.getopt(argv,"a:p:i:r",["algo=", "population=", "iterations=", "random"])
    except getopt.GetoptError:
        printUsage()
        sys.exit(1)
    print(args, opts)
    #Afterwards, I parse the options
    #...

if __name__ == "__main__":
    main(sys.argv[1:])

但是,当我运行这个

python tsp.py cities.txt -p 4

print(args, opts)产生了这个。

(['cities.txt', '-p', '4'], [])

为什么将选项解析为参数?

1 个答案:

答案 0 :(得分:2)

getopt要求所有-选项首先。 <{1}}在非破折号选项之后来了

-p 4将被正确解析。

您可能希望切换为使用argparse library;它更加灵活,可以在任何位置解析可选的命令行开关,因为它还可以显式处理所需的参数。