argparse使用
简介
- python的argparase主要用来解析参数,比较方便
- 可以解析可选参数或者必选参数
简单示例
- 创建
ArgumentParser()
对象 - 调用
add_argument()
方法添加参数 - 使用
parse_args()
解析添加的参数
example:
import argparse
# 创建对象
parser = argparse.ArgumentParser()
# 添加参数
parser.add_argument('name', help='name info')
parser.add_argument('gender', help='gender', type=str)
parser.add_argument('--age', help='integer', type=int)
# 使用parse_args解析参数
args = parser.parse_args()
name = args.name
gender = args.gender
age = args.age
print(type(name), name)
print(type(gender), gender)
print(type(age), age)
不加然后参数直接运行
python pack_argparse.py
- 打印结果
- 提示正确用法和报错内容,
name
,gender
是必须要传的参数
加两个必须传的参数运行
python pack_argparse.py jack man
- 打印结果
pycharm运行方法 - 第一步
- 第二步:传入参数,空格隔开
将必传参数和选传参数全部传入
python pack_argparse.py jack man 20
发现程序报错
- 第三个选传参数是未被认可的参数,传参的格式有误,导致这样的报错
正确的传入选传参数的格式
python pack_argparse.py jack man --age 20
- 打印结果
也可以传入多个可选参数
import argparse
# 创建对象
parser = argparse.ArgumentParser()
# 添加参数
parser.add_argument('name', help='name info')
parser.add_argument('gender', help='gender', type=str)
parser.add_argument('-num', '--age', help='integer', type=int)
# 使用parse_args解析参数
args = parser.parse_args()
name = args.name
gender = args.gender
age = args.age
print(type(name), name)
print(type(gender), gender)
print(type(age), age)
# ouuput
(utopia) F:\code\utopia>python pack_argparse.py jack man -num 678
<class 'str'> jack
<class 'str'> man
<class 'int'> 678
# ouuput
(utopia) F:\code\utopia>python pack_argparse.py jack man --age 20
<class 'str'> jack
<class 'str'> man
<class 'int'> 20
指定可选参数的取值范围,用关键字choices:
parser.add_argument('-num', '--age', choices=[20,21,22], help='integer', type=int)
- 运行程序
(utopia) F:\code\utopia>python pack_argparse.py jack man --age 25
usage: pack_argparse.py [-h] [-num {20,21,22}] name gender
pack_argparse.py: error: argument -num/--age: invalid choice: 25 (choose from 20, 21, 22)
- 如果可选参数不在给定范围内,程序会提示
- 当可选参数在范围内是,程序会正常执行
(utopia) F:\code\utopia>python pack_argparse.py jack man --age 22
<class 'str'> jack
<class 'str'> man
<class 'int'> 22
指定关键字default来指定选项默认的值
parser.add_argument('-num', '--age', default=20, help='integer', type=int)
(utopia) F:\code\utopia>python pack_argparse.py jack man
<class 'str'> jack
<class 'str'> man
<class 'int'> 20