1 作用
argparse 是对终端输入的命令行的参数进行解析,俗称命令行解析器。说白了就是在终端输入带参数的命令,它就会自动解析这命令里面的参数,实现对应参数的功能。(命令行是终端输入的指令)
2 使用方式
总体分为四个步骤
# 导入包
import argparse
# 初始化一个明细解析器对象
parser = argparse.ArgumentParser()
# 自定义一个参数和相应的功能
parser.add_argument()
# 执行解析
parser.parse_args()
其中ArgumentParser()在括号内是有参数的,在如下列了出来,但是在此以空括号举例理解使用。
prog - 程序的名称(默认:sys.argv[0])
usage - 描述程序用途的字符串(默认值:从添加到解析器的参数生成)
description - 在参数帮助文档之前显示的文本(默认值:无)
epilog - 在参数帮助文档之后显示的文本(默认值:无)
parents - 一个 ArgumentParser 对象的列表,它们的参数也应包含在内
formatter_class - 用于自定义帮助文档输出格式的类
prefix_chars - 可选参数的前缀字符集合(默认值:’-’)
fromfile_prefix_chars - 当需要从文件中读取其他参数时,用于标识文件名的前缀字符集合(默认值:None)
argument_default - 参数的全局默认值(默认值: None)
conflict_handler - 解决冲突选项的策略(通常是不必要的)
add_help - 为解析器添加一个 -h/–help 选项(默认值: True)
allow_abbrev - 如果缩写是无歧义的,则允许缩写长选项 (默认值:True)
exit_on_error - 决定当错误发生时是否让 ArgumentParser 附带错误信息退出。 (默认值: True)
3 举例理解
3.1 官方详细教程
官方文档详细介绍-Argparse 教程
argparse — 命令行选项、参数和子命令解析器
3.2 简单例子教程
定义一个prog.py文件
# 导入包
import argparse
# 初始化一个解析器
parser = argparse.ArgumentParser()
# 定义一个变量是square,指定类型是int,help是描述信息没有实际作用。这行用于接收传入的int型参数,并赋值给square
parser.add_argument("square", type=int,
help="display a square of a given number")
# 定义一个参数是verbosity,-v表示在命令行中如果有-v这个参数,那命令行中-v后的那个数值参数就会赋值给verbosity
parser.add_argument("-v", "--verbosity", type=int,
help="increase output verbosity")
# 执行解析
args = parser.parse_args()
# 对变量square进行操作,求平方
answer = args.square**2
# 对传入的verbosity参数判断,如果等于2,执行以下代码
if args.verbosity == 2:
print("the square of {} equals {}".format(args.square, answer))
# 对传入的verbosity参数判断,如果等于1,执行以下代码
elif args.verbosity == 1:
print("{}^2 == {}".format(args.square, answer))
else:
print(answer)
以下是在终端执行
1、只传入一个参数4,那在代码里square = 4
python3 prog.py 4
输出:16
2、传入两个参数,4和-v,这时候报错,因为命令行再-v后面没有再附带数值参数
python3 prog.py 4 -v
输出:usage: prog.py [-h] [-v VERBOSITY] square
prog.py: error: argument -v/–verbosity: expected one argument
3、传入三个参数,4 -v 2 表示square =4,-v表示指定给verbosity赋值为1
python3 prog.py 4 -v 1
输出:4^2 == 16
4、传入三个参数,4 -v 2 表示square =4,-v表示指定给verbosity赋值为2
python3 prog.py 4 -v 2
输出:the square of 4 equals 16
5、传入三个参数,4 -v 2 表示square =4,-v表示指定给verbosity赋值为3
python3 prog.py 4 -v 3
输出: 16