2

我使用 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
4

1 回答 1

6

第一个参数parser.add_option是一个短参数。-submitted.cl太长了,因为 short 参数是一个字符长。所以尝试类似的东西

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

看看这个文档的例子。

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

于 2013-10-23T06:13:25.197 回答