Python getopt 将选项识别为参数
Python getopt recognizing options as arguments
我正在尝试在 运行 运行 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'], [])
为什么将选项解析为参数?
getopt
要求所有 -
选项 优先 。 -p 4
取而代之的是 在 一个非破折号选项之后。
python tsp.py -p 4 cities.txt
将被正确解析。
您可能想改为使用 argparse
library;它更加灵活,可以在任何位置解析可选的命令行开关,因为它还显式处理所需的参数。
我正在尝试在 运行 运行 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'], [])
为什么将选项解析为参数?
getopt
要求所有 -
选项 优先 。 -p 4
取而代之的是 在 一个非破折号选项之后。
python tsp.py -p 4 cities.txt
将被正确解析。
您可能想改为使用 argparse
library;它更加灵活,可以在任何位置解析可选的命令行开关,因为它还显式处理所需的参数。