目录:
argparse 是 Python 3 标准库中用于解析命令行参数的强大模块,开发者可以轻松定义程序需要的参数类型、默认值和帮助信息,系统会自动从 sys.argv 中解析这些参数,并生成清晰的帮助文档。
当用户给程序传入无效参数时,argparse 会自动报出详细的错误信息。
支持位置参数和选项参数两种类型:位置参数根据出现的位置确定,而选项参数则以 “-“ 或 “–” 为前缀。
内置库,无需安装,直接导入。
import argparse
使用 ArgumentParser() 创建一个解析器对象,可以添加描述信息说明程序用途。
parser = argparse.ArgumentParser(description='程序描述信息')
通过 add_argument() 方法定义程序接受的参数,包括位置参数和可选参数。
parser.add_argument('filename', type=str, help='要处理的文件名')
parser.add_argument('-v', '--verbose', action='store_true', help='增加输出详细程度')
使用 parse_args() 方法解析命令行参数,返回一个包含所有参数的命名空间对象。
args = parser.parse_args()
创建 ArgumentParser 对象时,可以通过多个参数自定义其行为:
位置参数是用户必须提供的参数,定义时需要指定参数名称:
parser.add_argument('input_file', type=str, help='输入文件路径')
可选参数可以根据需要选择是否提供,定义时可以指定短参数名(单破折号)和长参数名(双破折号):
parser.add_argument('-l', '--log', type=str, help='日志文件路径')
add_argument() 方法支持丰富的参数配置选项:
指定参数的数据类型,如 int、float、str 等。argparse 会自动将输入值转换为指定类型。
parser.add_argument('retry', type=int, help='输入重试次数')
支持直接处理文件参数,通过 argparse.FileType 类型可以自动验证文件是否存在且可读:
parser.add_argument('file', type=argparse.FileType('r'), help='输入文件')
设置参数的默认值,当用户未提供该参数时使用。
parser.add_argument('--timeout', type=int, default=30, help='超时时间(秒)')
对于可选参数,可以设置为 True 使其成为必需参数。
parser.add_argument('--num', type=int, required=True, help='必须输入一个数字')
限制参数值只能从指定列表中选择。
parser.add_argument('--size', choices=['S', 'M', 'L'], help='尺寸选择')
控制参数接收的值的数量:
定义参数被解析时的行为:
描述参数的用途。
# test.py
import argparse
def main():
# 创建解析器
parser = argparse.ArgumentParser(
description='示例程序:演示argparse的各种功能',
epilog='更多信息请参考官方文档'
)
# 添加位置参数(必选)
parser.add_argument('input_file', type=str, help='输入文件路径')
# 添加可选参数
parser.add_argument('-o', '--output', type=str, default='output.txt',
help='输出文件路径(默认:output.txt)')
parser.add_argument('-v', '--verbose', action='store_true',
help='启用详细输出模式')
parser.add_argument('--count', type=int, default=1,
help='处理次数(默认:1)')
parser.add_argument('--mode', choices=['fast', 'normal', 'slow'],
default='normal', help='处理模式选择')
# 解析参数
args = parser.parse_args()
# 使用参数
print(f'输入文件: {args.input_file}')
print(f'输出文件: {args.output}')
print(f'处理次数: {args.count}')
print(f'处理模式: {args.mode}')
if args.verbose:
print('详细模式已启用')
if __name__ == '__main__':
main()
$ python3 test.py input.txt -o result.txt --count 5 --mode fast -v
使用 --help 参数查看帮助信息:
$ python3 test.py --help
usage: test.py [-h] [-o OUTPUT] [-v] [--count COUNT] [--mode {fast,normal,slow}] input_file
示例程序:演示argparse的各种功能
positional arguments:
input_file 输入文件路径
options:
-h, --help show this help message and exit
-o OUTPUT, --output OUTPUT
输出文件路径(默认:output.txt)
-v, --verbose 启用详细输出模式
--count COUNT 处理次数(默认:1)
--mode {fast,normal,slow}
处理模式选择
更多信息请参考官方文档
↶ 返回首页 ↶