添加既改变行为又存储参数的选项

时间:2010-07-18 15:36:38

标签: python argparse

使用argparse模块,是否可以为给定的参数执行多个操作?

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

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

这可能吗?

1 个答案:

答案 0 :(得分: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有更多详情。