参考文章:《argparse模块用法实例详解》

argparse是python的命令行解析的标准模块,内置于python,不需要安装。这个库可以让我们直接在命令行中就可以向程序中传入参数并让程序运行。

应用场景举例:
举例

红线所示,这里的”—gpu 0 —test_epoch 20”其实已经传入了python程序中,并可以被解析。这就是用argparse实现的。

实验1: 传入一个参数

我们先在桌面新建“learnArg”的文件夹,在该文件夹中新建demo.py文件,来看一个最简单的argparse库的使用的例子。

import argparse

parser = argparse.ArgumentParser(description='命令行中传入一个数字')
#type是要传入的参数的数据类型  help是该参数的提示信息
parser.add_argument('integers', type=str, help='传入的数字')

args = parser.parse_args()

#获得传入的参数
print(args)

在demo.py所在目录打开cmd:

python demo.py -h

该命令可以查看帮助信息。也就是告诉我们,这个demo.py程序后面可以添加的参数。

运行结果:

usage: demo.py [-h] integers//这是输入格式

命令行中传入数字//这是py程序中设置的description

positional arguments:
  integers    传入的数字//“integers”是参数的key值(具体在后面讲),“传入的数字”是help信息

optional arguments://可选参数-h
  -h, --help  show this help message and exit

下面根据帮助信息,传入一个参数

输入:D:\projectTodo\learnArg>python demo.py 5
输出:Namespace(integers='5')

这一部分说明了: 参数已经传入了demo.py程序中

实验2:操作args字典

其实得到的这个结果Namespace(integers=’5’)是一种类似于python字典的数据类型。
intergers 对应字典的key
‘5’对应字典的value

使用arg.key可以提取这个参数。

修改demo.py:

import argparse

parser = argparse.ArgumentParser(description='命令行中传入数字')
#type是要传入的参数的数据类型  help是该参数的提示信息
parser.add_argument('integer1', type=str, help='传入的数字1')
parser.add_argument('integer2', type=str, help='传入的数字2')
parser.add_argument('integer3', type=str, help='传入的数字3')

args = parser.parse_args()
print(args.integer1)
print(args.integer2)
print(args.integer3)
#获得传入的参数

测试:

D:\projectTodo\learnArg>python demo.py 1 2 3
1
2
3

补充:可选参数

可选参数的作用类似变量名传参
需要加上’—‘

举例:

import argparse

parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('--family', type=str,help='姓')
parser.add_argument('--name', type=str,help='名')
args = parser.parse_args()

#打印姓名
print(args.family+args.name)

命令行中输入:

输入:python demo.py --family=张 --name=三
输出:张三

可选参数避免了传入参数顺序错误造成的数据错乱

补充:默认值、必须参数

parser.add_argument('--name', type=str, required=True, default='', help='名')

默认值就是defult字段
required用于标识该参数是不是必需的,