如何获取argparser中所有定义参数的dest值?
获取argparse解析器中所有参数的dest值
你可以直接访问argparse解析器的内部属性来提取参数的dest值,无需调用parse_args()解析命令行输入:
方法一:遍历所有动作并过滤帮助项
argparse解析器的_actions属性包含了所有添加的参数动作(包括默认的帮助动作),遍历该列表并提取每个动作的dest属性即可,若不需要帮助项可过滤掉:
import argparse parser = argparse.ArgumentParser() parser.add_argument('arg1') parser.add_argument('arg2') parser.add_argument('arg3') parser.add_argument('arg4') # 提取所有参数的dest值,排除默认的help动作 dest_values = [action.dest for action in parser._actions if action.dest != 'help'] print(dest_values) # 输出: ['arg1', 'arg2', 'arg3', 'arg4']
方法二:分别获取位置参数与可选参数
如果需要区分位置参数和可选参数,可以使用解析器的_get_positional_actions()和_get_optional_actions()方法:
# 获取所有位置参数的dest值 positional_dests = [action.dest for action in parser._get_positional_actions()] # 获取所有可选参数的dest值 optional_dests = [action.dest for action in parser._get_optional_actions()] # 合并所有dest值 all_dests = positional_dests + optional_dests
无帮助动作的简化场景
如果创建解析器时通过add_help=False禁用了帮助功能,可直接遍历_actions无需过滤:
parser = argparse.ArgumentParser(add_help=False) parser.add_argument('arg1') parser.add_argument('arg2') dest_values = [action.dest for action in parser._actions]
内容的提问来源于stack exchange,提问作者Sterling Butters
相关产品推荐
相关产品推荐

