首页 > 解决方案 > Python argparse 处理多个但相同的标志

问题描述

全部,

我想创建一个参数解析器,它允许对同一命令行选项进行多个指定(想想-egrep 的标志:您可以指定多个正则表达式)。这是我的测试代码:

parser = argparse.ArgumentParser(description="...my description...")
parser.add_argument("file", nargs="*",
                    help="email file(s) to process")
parser.add_argument("-i", "--input",
                    nargs=1, dest="input_list",
                    help="a text file containing filenames to process")
argp = parser.parse_args(args)

args包含多个-i选项时,例如:['-i', 'file1', '-i', 'file2', 'arg1', 'arg2', 'arg3'],我只进入'file2'了生成的命名空间(argp.input_list)。

argparse 是否适应上述input_list目标变量可以包含多个值的情况?

威拉万

标签: python

解决方案


action='append'可能是你想要的,即:

parser = argparse.ArgumentParser(description="...my description...")
parser.add_argument("file", nargs="*",
                    help="email file(s) to process")
parser.add_argument("-i", "--input",
                    dest="input_list", action='append',
                    help="a text file containing filenames to process")
argp = parser.parse_args(['-i', 'file1', '-i', 'file2', 'arg1', 'arg2', 'arg3'])

给我:

Namespace(file=['arg1', 'arg2', 'arg3'], input_list=['file1', 'file2'])

推荐阅读