如何修复opt parse optparse.OptionError:无效的长选项字符串'-submitted.cl':必须以 - 开头,然后是非破折号

时间:2013-10-23 05:59:49

标签: python optparse

我使用OptionParser

有以下选项
parser = OptionParser()
parser.add_option("-submitted.cl", "--change_list", dest="change_list",help="Submitted Change list")
parser.add_option("-submitted.cr", "--crlist", dest="cr_list",help="Submitted CR list")
parser.add_option("-build.location", "--sbl", dest="sbl",help="Source build location")
parser.add_option("-filer.location", "--dbl", dest="dbl",help="Filer location")
parser.add_option("-users", "--users",dest="users",help="Users")
(options, args) = parser.parse_args()

我正在使用以下选项运行脚本并遇到以下错误,请提供有关如何修复它的输入。

python save_build_artifacts.py 12345 02384 \\ben\cnss_dev_integration\nfc_builds\LA_host_builds\8084\Build2  \\ben\cnss_dev_integration\temp gnakkala

错误: -

Traceback (most recent call last):
  File "save_build_artifacts.py", line 75, in <module>
    main()
  File "save_build_artifacts.py", line 43, in main
    parser.add_option("-submitted.cl", "--change_list", dest="change_list",help="Submitted Change list")
  File "C:\Python27\lib\optparse.py", line 1012, in add_option
    option = self.option_class(*args, **kwargs)
  File "C:\Python27\lib\optparse.py", line 566, in __init__
    self._set_opt_strings(opts)
  File "C:\Python27\lib\optparse.py", line 606, in _set_opt_strings
    self)
optparse.OptionError: invalid long option string '-submitted.cl': must start with --, followed by non-dash

1 个答案:

答案 0 :(得分:5)

parser.add_option中的第一个参数是短参数。 -submitted.cl太长,因为短参数是一个字符长。所以尝试像

这样的东西
from optparse import OptionParser

parser = OptionParser()
parser.add_option("-c", "--change_list", dest="change_list",help="Submitted Change list")
parser.add_option("-r", "--crlist", dest="cr_list",help="Submitted CR list")
parser.add_option("-b", "--sbl", dest="sbl",help="Source build location")
parser.add_option("-f", "--dbl", dest="dbl",help="Filer location")
parser.add_option("-u", "--users",dest="users",help="Users")
(options, args) = parser.parse_args()

同样在您的调用中,您需要命名您正在使用的参数,如python save_build_artifacts.py 23 43 -c file.xy

查看this doc示例。

(并考虑使用argparse。不推荐使用Optparse)