在 Python 的 argparse
模块中,nargs='+'
是 add_argument
方法的一个参数,用于指定命令行参数需要接受一个或多个值。
具体作用
nargs='+'
的含义是:
- 至少需要一个值:这个参数要求用户在命令行中为它提供一个或多个值。
- 将多个值解析为一个列表:传递给该参数的值会被存储在一个列表中。
示例代码
import argparse
parser = argparse.ArgumentParser(description="Demo for nargs='+'")
parser.add_argument('--files', nargs='+', help="List of files to process")
args = parser.parse_args()
print(args.files)
使用方法
运行以下命令行:
python script.py --files file1.txt file2.txt file3.txt
输出结果:
['file1.txt', 'file2.txt', 'file3.txt']
--files
参数被指定为nargs='+'
,因此支持接受一个或多个文件名作为值。- 提供的多个文件名会被解析为列表,存储在
args.files
中。
错误示例
如果运行以下命令,没有为 --files
参数提供值:
python script.py --files
则会报错:
error: argument --files: expected one or more arguments
原因是 nargs='+'
要求至少提供一个值。
与其他 nargs
值的对比
-
nargs=1
接受一个值,但返回一个包含单个值的列表。python script.py --files file1.txt
输出:
['file1.txt']
-
nargs='*'
接受零个或多个值,如果没有值提供,则返回空列表。python script.py --files
输出:
[]
-
nargs='?'
接受零个或一个值,如果没有值提供,则返回默认值或None
。python script.py --files file1.txt
输出:
'file1.txt'
或:python script.py --files
输出:
None
(如果未提供默认值)。