作用
- 在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数。
使用流程
- 首先导入模块:
import argparse
- 创建一个解析对象:
parser = argparse.ArgumentParser(description="your script description")
description
参数用于描述脚本用途的信息,可以为空 - 向该对象中添加你要关注的命令行参数和选项:
parser.add_argument()
- 进行解析:
args = parser.parse_args()
应用
- 创建prog.py,然后在命令行执行 python prog.py ,结果会打印 usage,因为 argparse 会自动生成帮助文档
import argparse
parser = argparse.ArgumentParser(description="argparse test")
args = parser.parse_args()
- 位置参数 positional arguments,用法是不用带
-
,是必须的,不加会报错
import argparse
parser = argparse.ArgumentParser(description="argparse test")
# 位置参数
parser.add_argument("e")
# 解析参数
args = parser.parse_args()
print(args.e)
- 可选参数 optional arguments 有两种方式:(1)
-
指定的短参数,例如-h
(2)--
指定的长参数,例如--help
这两种方式可以同存,也可以只存在一个
#可选参数
parser.add_argument("-v", "--verbosity")
注意-v
后面也必须指定参数,如果不需要指定参数的值,需要设定action="store_true"
,那么这个参数的值只能是true或者false,而且在后面添加参数会报错
store_true的作用:下面的代码为例,若触发 verbosity,则为 True, 否则为 False:
#可选参数
parser.add_argument("-v", "--verbosity", action="store_true")
- 类型
type
: 默认的参数类型为str,如果要进行数学计算,需要在参数进行解析后进行类型转换,如果不能转换则会报错
parser.add_argument("x", type=int, help="输入一个数字")
- 可选值
choices=[ ]
:
action的例子中定义了默认值为True和 False的方式,如果要限定某个值的取值范围,比如上个例子中的整型,限定其取值范围为0、1、2
# 此时verbosity的值只能是[0,1,2]中的值
parser.add_argument("-v", "--verbosity", type=int, choices=[0,1,2])
- 互斥参数:
可以看出,-a和-b不能同时出现,或仅出现一个都可以,同时出现就会报错
#互斥参数
group = parser.add_mutually_exclusive_group()
group.add_argument("-a", action="store_true")
group.add_argument("-b", action="store_true")
- 参数默认值
parser.add_argument("-v", "--verbosity", type=int, choices=[0,1,2], default=2)