不假定所有参数都是字符串的Python参数解析器

2024-04-25 13:12:15 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一个Python模块可以解析一系列似乎是命令行选项和参数,其中选项值不是字符串?也就是说,我可能有这样一个序列:

("--foo", foo, "--bar", bar1, bar2, baz)

这里"--foo""--bar"是字符串,其他的是任意对象。我希望能够定义,例如"--foo"接受一个参数,"--bar"接受两个参数,让解析器只读取这些选项后面的内容,而不尝试解析它们

我想我应该使用标准的argparse加上nargs或者一个自定义的argparse.Action,但是即使有了这些东西,它也希望每个参数都是一个字符串,如果不能读取它的开头,就会引发一个异常

更新:令人惊讶的是,旧的optparse可以做到这一点


Tags: 模块对象字符串命令行解析器参数定义foo
1条回答
网友
1楼 · 发布于 2024-04-25 13:12:15

令人惊讶的是,旧的optparse处理这个问题的方式是开箱即用的。即:

>>> class UniqueSnowflake(object): pass
...
>>> parser = optparse.Parser()
>>> parser.add_option(" foo", type="string") # means 'as is'
>>> parser.parse([" foo", UniqueSnowflake()])
(<Values at 0x... {'foo': <...UniqueSnowflake object at 0x...>}>, [])

相关问题 更多 >