【问题标题】:optparse in pythonpython中的optparse
【发布时间】:2011-08-29 07:47:27
【问题描述】:

有没有办法可以在 python 中配置 optparse 以不采用开头 -?所以而不是

%program -d optionvalue

我明白了

%program d optionvalue

目前,当我尝试这样做时

parser.add_option('d', '--database')

我收到以下错误:

optparse.OptionError: invalid option string 'd': must be at least two characters long

任何帮助将不胜感激!谢谢

【问题讨论】:

  • 为什么要这样做?那是打破常规。你将如何区分参数d 和值d? (例如program d d

标签: python customization options optparse


【解决方案1】:

简而言之,没有。

用于提供额外的参数 指导或定制的信息 一个程序的执行。有许多 选项的不同语法;这 传统的 Unix 语法是连字符 (“-”) 后跟一个字母, 例如-x 或 -F。此外,传统的 Unix 语法允许多个选项 合并为一个参数,例如-X -F 等效于 -xF。引入的 GNU 项目——接着是 连字符分隔的一系列单词,例如 --file 或 --dry-run。 这些是唯一提供的两种选项语法 选择解析。

http://docs.python.org/library/optparse.html#terminology

您必须自己解析。

【讨论】:

  • 是的,似乎即使 'XX' 也不起作用,因为我收到以下错误: optparse.OptionError: invalid short option string 'dd': must be of the form -x, (x any non-破折号)
【解决方案2】:

您可以强制使用回调操作:

http://docs.python.org/library/optparse.html#callback-example-6-variable-arguments

这使您可以原始访问左右参数

【讨论】:

    【解决方案3】:

    parse_args() 允许您提供自己的参数列表,而不仅仅是使用默认使用的sys.argv[1:]。所以你可以预处理命令行参数,然后将它们传递给 optargs。假设您希望所有 1 个字符的参数都算作选项键:

    orig_args = sys.argv[1:]
    new_args = []
    for arg in orig_args:
        if len(arg) == 1:
            arg = '-' + arg
        new_args.append(arg)
    
    (options, args) = parser.parse_args(new_args)
    

    (你也可以继承 OptionParser 并把它放在那里)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      相关资源
      最近更新 更多