python argparse中的多个参数

Posted

技术标签:

【中文标题】python argparse中的多个参数【英文标题】:Multiple argument in python argparse 【发布时间】:2022-01-06 22:11:26 【问题描述】:

我希望我的脚本采用同名的多个参数。

python3 script.py --test test1 --test test2 --test test3 --config config_path

我怎样才能做到这一点。我已经从 argparse 尝试了 nargs 到现在。

# My Solution
import argparse

parser = argparse.ArgumentParser(description='Arg Parser',
            formatter_class=argparse.ArgumentDefaultsHelpFormatter,
            allow_abbrev=False)

parser.add_argument('--test', nargs='+', required=True, \
                help='Modules name for sanity check', choices=['test1 ', 'test2 ', 'test3 '])

parser.add_argument('--config')

arg = parser.parse_args()

但它的行为与它的形式略有不同

python3 script.py --test test1 test2 --config config_path

关于如何获得所需行为的任​​何建议

【问题讨论】:

有一个 'append' `action 值。检查文档。 感谢@hpaulj append 有效,但我看到test=[['train1'], ['train2']]) 是这种预期行为。 你的nargs 是什么? 'append' 创建一个列表,nargs 可以添加另一个层。 我明白了,我正在使用 nargs='+' 导致这种行为。删除它帮助我解决了这个问题。这是很大的帮助。 【参考方案1】:

@hpaulj cmets 添加代码以防万一

parser.add_argument('--test', action='append', required=True, \
                choices=['test1 ', 'test2 ', 'test3 '])

【讨论】:

以上是关于python argparse中的多个参数的主要内容,如果未能解决你的问题,请参考以下文章

Python argparse - 向多个子解析器添加参数

在 Argparse 中使用多个相同的参数

python中的argparse包——用于解析命令行参数

python中的argparse

ArgParse 模块想要在单个命令中使用两个参数

python中的argparse模块怎么参数传递