Skip to main content
 首页 » 编程设计

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

2025年05月04日9del

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

具体来说,我想提供一个带有 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有更多详细信息。