python getopt 抛出 GetoptError 选项 --mode 不能有参数

当我指定一个命令行选项时,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", line 159, in do_longs raise GetoptError('option --%s must not have an argument' % opt, opt ) getopt.GetoptError: 选项 --mode 不能有参数


那么我哪里出错了,如何解决呢?


一只甜甜圈
浏览 523回答 1
1回答

海绵宝宝撒

您的长选项名称缺少尾随=.&nbsp;请参阅文档,即:longopts,如果指定,必须是一个字符串列表,其中包含应该支持的长选项的名称。选项名称中不应包含前导“--”字符。需要参数的长选项应后跟等号 ('=')&nbsp;...IEopts,args&nbsp;=&nbsp;getopt.getopt(sys.argv[1:],&nbsp;"m:p:",&nbsp;['mode=',&nbsp;'perf='])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python