python - 在 Python 中解析空选项

标签 python optparse optionparser

我有一个允许您将事件数据发送到自定义脚本的应用程序。您只需布置命令行参数并分配哪些事件数据与哪些参数相关。问题是这里没有真正的灵 active 。您映射出的每个选项都会被使用,但并非每个选项都必须有数据。因此,当应用程序构建要发送到脚本的字符串时,一些参数为空,并且 python 的 OptionParser 出错并显示“错误:--someargument 选项需要一个参数”

因为有超过 200 个数据点,所以我无法编写单独的脚本来处理每个可能参数的组合(需要 2^200 个脚本)。有没有办法在 python 的 optionparser 中处理空参数?

最佳答案

抱歉,我的第一个回答误解了问题。当您定义一个选项时,您可以使用 回调 操作类型实现让命令行标志的可选参数的能力。使用以下函数作为回调(您可能希望根据自己的需要进行调整)并为每个可以选择接收参数的标志配置它:

import optparse

def optional_arg(arg_default):
    def func(option,opt_str,value,parser):
        if parser.rargs and not parser.rargs[0].startswith('-'):
            val=parser.rargs[0]
            parser.rargs.pop(0)
        else:
            val=arg_default
        setattr(parser.values,option.dest,val)
    return func

def main(args):
    parser=optparse.OptionParser()
    parser.add_option('--foo',action='callback',callback=optional_arg('empty'),dest='foo')
    parser.add_option('--file',action='store_true',default=False)
    return parser.parse_args(args)

if __name__=='__main__':
    import sys
    print main(sys.argv)



从命令行运行你会看到这个:

# python parser.py
(<Values at 0x8e42d8: {'foo': None, 'file': False}>, [])

# python parser.py --foo
(<Values at 0x8e42d8: {'foo': 'empty', 'file': False}>, [])

# python parser.py --foo bar
(<Values at 0x8e42d8: {'foo': 'bar', 'file': False}>, [])

关于python - 在 Python 中解析空选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1229146/

相关文章:

Ruby OptionParser 空开关 "-"行为

python - 选项解析器与参数不匹配

python - Python 中的 tifffile 不写入 16 位 tiff

python - 当我使用 ImageTk 时,我的图像不透明

python - 列包含列 1

python - 从命令行选项创建数组 (python::optparse)

ruby - 使用 OptionParser 解析 Ruby 中的多个命令行选项

python - 我正在制作一个 python 文本冒险游戏。需要帮助制作 'inventory'

ruby - OptionParser 返回 bool 值而不是参数?

ruby - Ruby optparse 中不必要的参数