Python argparse使用方法介绍

官方文档地址

Python argparse使用方法介绍

1. argparse使用流程

# 1. 导入包
import argparse
# 2. 实例化对象
parser = argparse.ArgumentParser(description='Test.')
# 3. 添加参数
"""
参数分必选参数和可选参数
参数名前面没有'-'则代表是必选参数,传参时无需指定参数名,直接指定参数值即可(多个必选参数,按参数顺序解析)
参数名前面带有'-'或'--'表示是可选参数,解析成对象属性时,属性名会自动忽视左侧的'-',如-a,获取值时使用的是xxx.a
参数名除了开头有'-',其它位置也有'-'时,在解析成对象属性时,其它位置的'-'会转换为'_',如--a-b,获取值时使用的是xxx.a_b
"""
parser.add_argument('integer')  # 添加必选参数integers
parser.add_argument('-a')  # 添加可选参数a
parser.add_argument('--b-c')  # 添加可选参数b_c
# 4. 解析参数
args = parser.parse_args()  # 通过控制台传参
# args = parser.parse_args(['1', '-a', 'value of a', '--b-c', 'value of b_c'])  # 通过代码传入参数
print(args.integer)
print(args.a)   # 属性名不需要带左侧的'-'
print(args.b_c)  # 解析时,参数名后面的'-'在属性名中被转为'_'

2. argparse.add_argument参数说明

  • name, 指定参数名称
    - 必选参数是没有以’-’开头的参数
    - 可选参数是以’-‘或’–'开头的参数
  • action, 当参数在命令行中出现时使用的动作基本类型
    - 常用的值为:‘store’(默认),‘store_true’, ‘store_false’, ‘store_const’, ‘count’, ‘append’, ‘extend’
    - ‘store’:即获取通过命令行传入的值
    - ‘store_false’:命令行有指定该参数,则参数值为false,否则为true。传参时不需要再指定参数值
    - ‘store_true’:与’store_false’相反
    - ‘store_const’:命令行有指定该参数,则该参数的值为参数’const’定义的值
    - ‘count’:命令中该参数出现的次数作为该参数的值
    - ’append’:该参数如果指定多次,则将其值合并在一个list中
    - ‘extend’:该参数如果指定多次,则将其值合并在一个list中。与append的区别在于一个是用list的append方式追加,一个是用list的extend方式追加
  • nargs, 该参数的值的个数,用于同一个参数传入多个值
  • const, 被一些 action 和 nargs 选择所需求的常数
  • default, 用户未指定该参数时的默认值
  • type, 指定参数的数据类型
    - 如果是bool类型,只是将空字符串转为 False 而将非空字符串转为 True
  • choices, 给定一组值,参数值只能在这组值中选
  • required, 该可选参数是否时必填的
  • help, 对该参数的功能进行介绍,在调用help时呈现
  • metavar, 介绍参数值示例,在调用help时呈现,对代码本身无作用,只是对人起到提示的作用
  • dest, 指定参数在引用时所对应的属性名称
# 必选参数,使用时无需指定参数名
# parser.parse_args(['/home/data_dir']) 是对的
# parser.parse_args(['data_dir', '/home/data_dir']) 是错的
# 取值时使用parser.data_dir
args = parser.add_argument('data_dir', metavar='DIR',
                    help='path to dataset')

# 定义可选参数dataset,默认值为'',使用时可用如下两种方式
# parser.parse_args(['--dataset', '/home/data_dir'])
# parser.parse_args(['-d', '/home/data_dir'])
# 取值时忽视左侧的所有'-',使用parser.dataset(如果同时指定'--'和'-'两种传参方式,则取值时以'--'定义的名称
args = parser.add_argument('--dataset', '-d', metavar='NAME', default='',
                    help='dataset type (default: ImageFolder/ImageTar if empty)')

# 定义可选参数pretrained,如果命令行指定该参数,则其值为true,否则为false
args = parser.add_argument('--pretrained', action='store_true', default=False,
                    help='Start with pretrained version of specified network (if avail)')
# 只需要指定参数名,不需要指定参数值 parser.parse_args(['--pretrained', True]) 是错误的 
# parser.parse_args(['--pretrained']) 此时parser.pretrained为True
# parser.parse_args([]) 此时parser.pretrained为False

# 定义可选参数input_size,长度为3,数据类型为int型
args = parser.add_argument('--input-size', default=None, nargs=3, type=int, metavar='N N N')
# parser.parse_args(['--input-size', '3 224 224']) 三个值用空格隔开
# 取值时使用args.input_size, 除了左侧开头的'-'被忽视,其它位置的'-'均被解析为'_'


# 定义可选参数torchscript
args = parser.add_argument('--torch-script', dest='torchscript', action='store_true',
                    help='torch.jit.script the full model') 
# parser.parse_args(['--torch-script'])  赋值为True,因为action='store_true'
# parser.parse_args([])  赋值为False,因为action='store_true'
# 取值时,使用args.torchscript dest对属性进行重命名了

# 定义可选参数sum
args = parser.add_argument('-sum',  dest='accumulate', action='store_const',
                     const=sum, default=max,
                     help='sum the integers (default: find the max)')
parser.parse_args(['-sum']) # args.accumulate的值为const定义的sum
parser.parse_args([]) # args.accumulate的值为default定义的max

# 定义可选参数move,其值只能是['rock', 'paper', 'scissors']中的一个
parser.add_argument('-move', choices=['rock', 'paper', 'scissors'])
parser.parse_args(['-move', 'rock'])
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值