在python中,经常会遇到执行py脚本时传参的场景,而argparse就是一个应用非常广泛的传参方式,下面对如何使用argparse做一个简单的介绍
代码实例
下面是代码中的定义方式,假设下面代码对应的py文件为demo.py
# 导入
import argparse
# 创建
parser = argparse.ArgumentParser(description="你的描述")
# 添加参数
parser.add_argument('--backbone', type=str, default='mobilenet',
choices=['resnet', 'xception', 'drn', 'mobilenet'],
help='backbone name (default: resnet)')
parser.add_argument('--no-cuda', action='store_true', default=
False, help='disables CUDA training')
# 使用
args = parser.parse_args()
print(args.backbone)
print(args.no-cuda)
说明
- --backbone : 参数名称,任意自定义名称即可
- type : 参数类型
- default : 默认值
- choices : 可选值
- help : 参数说明
- action : 一个有意思的参数设置方式, 类似于开关,一般针对bool类型参数,可选设为 'store_true' 或 'store_false', 若设为'store_true',那么只要设定,就代表为True,不设定就是默认值
应用实例
既然代码中已经定义好了,那么在运行py脚本时如何使用这些参数呢?
case1: python demo.py --backbone nihao
此时会给backbone参数赋值为nihao, 而no-cuda设置,将会使用默认值False
case2 : python demo.py --no-cuda
此时对于no-cuda这个参数,将会赋值为True,因为在脚本中添加该参数时action='store_true', 只要设置,就赋值True,而且,不能显式地为其设置其他值,否则出错
错误实例:
python demo.py --no-cuda True