-
argparse是什么?
argparse是一个命令行参数解析模块,可以解析从命令行输入的内容。
-
argparse 基础
最基础的使用如下,这时只有最基础的-h参数,会输出系统默认的帮助信息。
import argparse
parser = argparse.ArgumentParser()
parser.parse_args()
argparse 使用举例
-
positional arguments
这类的参数在运行程序时必须填写的参数
创建 friend.py
# friend.py
# 增加 positional arguments
import argparse
parse = argparse.ArgumentParser()
# 必须输入4个参数 age height weigh tag
parse.add_argument('age')
parse.add_argument('height')
parse.add_argument('weight')
parse.add_argument('tag')
args = parse.parse_args()
def get_girlfriend(age="未知", height="未知", weight="未知", tag="女朋友"):
print("恭喜获得一个年龄" + age + " 身高" + height + " 体重" + weight + "的" + tag)
# 使用获取的参数使用args.参数名
get_girlfriend(args.age, args.height, args.weight, args.tag)
正常运行:
>>> python3 friend.py 17 160 45kg 小萝莉
恭喜获得一个年龄17 身高160 体重45kg的小萝莉
不正常运行:会有错误提示参数输入不全
>>> python3 friend.py 12 34
usage: friend.py [-h] age height weight tag
friend.py: error: the following arguments are required: weight, tag
那么如果不知道输入什么不想输入呢?可以给参数添加一个默认值
friend.py
···
parse.add_argument('age', help="Age of girlfriend", nargs='?', default='未知')
parse.add_argument('height', nargs='?', default='未知')
parse.add_argument('weight', nargs='?', default='未知')
parse.add_argument('tag', nargs='?', default='女朋友')
···
narg='?' 表示参数可以有0个或1个,
default = "默认值" 定义参数默认值
更改后只运行程序不输入全部参数
>>> python3 friend.py
恭喜获得一个年龄未知 身高未知 体重未知的女朋友
>>> python3 friend.py 33 155
恭喜获得一个年龄33 身高155 体重未知的女朋友
如何加上帮助信息 ?
通过 argparse.ArgumentParser(description="程序描述")添加整个程序的帮助信息
通过 add_argument('参数名', help="描述")添加参数的信息
修改 friend.py 代码如下
···
parse = argparse.ArgumentParser(description="Who is your girlfriend")
parse.add_argument('age', help="Age of girlfriend")
···
运行 -h 可以查看整个程序和输入参数的描述
# friend.py
>>> python3 friend.py -h
usage: friend.py [-h] age height weight tag
Who is your girlfriend
positional arguments:
age Age of girlfriend
height
weight
tag
optional arguments:
-h, --help show this help message and exit
-
optional arguments
可选参数,运行程序时可以不输入。
-指定短参数, --指定长参数,可以同时存在。
使用举例 choicegirls.py
action='store_true' 表示不输入参数时默认为true
# 输入-g 命令后列出供选择的girls
# choicegirls.py
import argparse
parse = argparse.ArgumentParser()
parse.add_argument('-g', '--girls', action='store_true')
args = parse.parse_args()
# 通过解析后,值保存在args.girls内
if args.girls:
print("1.年龄18的小萝莉")
print("2.年龄30的富婆")
运行如下
>>> python3 friend.py -g
1.年龄18的小萝莉
2.年龄30的富婆
-
type和choice
因为默认的参数类型为str,type 可以将输入的内容转为int。
choice=[1,2] 设置该参数只能选择1或者2.
输入 -c 命令后选择
添加代码
# choicegirls.py
···
parse.add_argument('-c', type=int, choices=[1, 2])
···
if args.c:
print("恭喜选择了" + str(args.c))
运行
>>> python3 friend.py -c 1
恭喜选择了1
输入不是1或者2时报错
python3 friend.py -c 3
usage: friend.py [-h] [-g] [-c {1,2}]
friend.py: error: argument -c: invalid choice: 3 (choose from 1, 2)
网友评论