当我指定命令行选项时,GetOpt似乎不起作用,引发异常,此文件名为o.py:
import getopt
import sys
opts,args = getopt.getopt(sys.argv[1:], "m:p:", ['mode', 'perf'])
for opt_name,opt_value in opts:
if opt_name in ('--mode'):
print opt_name
continue
if opt_name in ('--perf'):
print opt_name
continue
然后在以下情况下出现运行时异常:
python o.py --mode=a
Traceback (most recent call last):
File "o.py", line 3, in <module>
opts,args = getopt.getopt(sys.argv[1:], "m:p:", ['mode', 'perf'])
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getopt.py", line 88, in getopt
opts, args = do_longs(opts, args[0][2:], longopts, args[1:])
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getopt.py", line 159, in do_longs
raise GetoptError('option --%s must not have an argument' % opt, opt)
getopt.GetoptError: option --mode must not have an argument
opts, args = do_longs(opts, args[0][2:], longopts, args[1:])
文件“ /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/getopt.py”,行159,在do_longs中 引发GetoptError('选项-%s不能有参数'%opt,opt) getopt.GetoptError:选项--mode不能有参数
那我在哪里弄错了以及如何解决呢?
答案 0 :(得分:2)
您的长选项名称缺少尾随=
。参见docs,即:
longopts(如果已指定)必须是带有应支持的long选项名称的字符串列表。选项名称中不应包含前导“-”字符。 需要参数的长选项应后跟等号('=') ...
即
opts,args = getopt.getopt(sys.argv[1:], "m:p:", ['mode=', 'perf='])