Python中的ArgumentParser

闾丘玺
2023-12-01

argparse 是一个Python的内建模块,用法可以参考官方文档:https://docs.python.org/3/library/argparse.html

主要步骤:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--weights', type=str, default='best.pt', help='model weights path')
parser.add_argument(...)
...
args = parser.parse_args()

print(args.weights)

add_argument() 方法:
.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

  • name or flags - 一个参数名或者选项列表名,例如 foo 或 -f, --foo,带杠的是可选参数,否则是位置参数
  • action - 当参数在命令行中出现时将触发的动作
  • nargs - 该参数包含的值的个数,*:元素个数≥ 0+:元素个数≥ 1? :元素个数自动分配
  • const - 仅用于 action=store_const、action=append_const、nargs=’?’
  • default - 如果命令行中不存在该参数,则以此作为默认值(本文不考虑命名空间)
  • type - 该参数的类型,会被Parser自动转换,默认为字符串
  • choices - 选项列表,如 choices=[‘rock’, ‘paper’, ‘scissors’] 或者 choices=range(1, 4),则该参数只能被赋值为其中某一个
  • required - 此参数是否必选
  • help - 简单描述该参数的用途
  • metavar - 在help中显示的参数值示例
  • dest - 用于指定实际调用的参数名,一般和命令行中的参数名不同

action 类型:

  • action='store' 默认动作,不需要指定,即该参数使用存储的值(命令行给定值或默认值)
  • action='store_const' 该参数使用const选项指定的常量
  • action='store_true'action='store_false' 该参数使用True或者False

type 类型:

  • 默认情况下,ArgumentParser 对象将命令行参数当作简单字符串读入
  • 命令行字符串经常需要被当作其它的类型,比如 float 或者 int,解析器将自动进行类型检查和类型转换
  • 一般的内建类型函数都是可用的

示例:

parser.add_argument('-f', '--foo') # 可选参数
parser.add_argument('foo', type=int, choices=range(5, 10)) # 必选参数
parser.add_argument('--foo', action='store_const', const=42) # 取决于是否被触发
parser.add_argument('--bar', action='store_false')
parser.add_argument('--foo', action='append') # 命令行中可以多次给值
parser.add_argument("foo", nargs="+", type=str) # 至少给一个值,一定转为列表类型
parser.add_argument("foo", nargs="*", type=str) # 可以是空值,生成空列表
parser.add_argument('--foo', nargs='?', const='c', default='d') # 自动转为单个元素或列表
parser.add_argument('--foo', dest='bar') # 调用的时候要用 args.bar
 类似资料: