2010-07-18 29 views
2

使用​​模块,是否可以对给定参数执行多个操作?添加既改变行为又存储参数的选项

具体来说,我想提供一个nargs='?'-l/--list选项,将程序的行为从它的主要功能更改为提供有关在一组的所有可能性,或者约一个特定的可能性的信息之一。

通常会有一个名称空间属性,其中包含一个要在解析后调用的函数;我希望-l选项既可以更改此属性,也可以将其参数存储在不同的属性中。

这可能吗?

回答

1

只需实现您自己的Action子类。这基本上是这样的:

class ListAction(argparse.Action): 
    def __call__(parser, namespace, values, option_string=None): 
     setattr(namespace, 'list', values[0]) 
     do_something_completely_different() 

argparse documentation有更多的细节。

+0

啊哈......我错过了那部分文档。谢谢! – intuited 2010-07-18 18:20:02