2
使用模块,是否可以对给定参数执行多个操作?添加既改变行为又存储参数的选项
具体来说,我想提供一个nargs='?'
-l
/--list
选项,将程序的行为从它的主要功能更改为提供有关在一组的所有可能性,或者约一个特定的可能性的信息之一。
通常会有一个名称空间属性,其中包含一个要在解析后调用的函数;我希望-l
选项既可以更改此属性,也可以将其参数存储在不同的属性中。
这可能吗?
使用模块,是否可以对给定参数执行多个操作?添加既改变行为又存储参数的选项
具体来说,我想提供一个nargs='?'
-l
/--list
选项,将程序的行为从它的主要功能更改为提供有关在一组的所有可能性,或者约一个特定的可能性的信息之一。
通常会有一个名称空间属性,其中包含一个要在解析后调用的函数;我希望-l
选项既可以更改此属性,也可以将其参数存储在不同的属性中。
这可能吗?
只需实现您自己的Action
子类。这基本上是这样的:
class ListAction(argparse.Action):
def __call__(parser, namespace, values, option_string=None):
setattr(namespace, 'list', values[0])
do_something_completely_different()
该argparse documentation有更多的细节。
啊哈......我错过了那部分文档。谢谢! – intuited 2010-07-18 18:20:02