最近看代码 这个类之前都是简单看过去了 今早仔细看了一下 做个记录
ArgumentParser
是 Python 标准库中的 argparse
模块提供的一个类,用于处理命令行参数。它使得编写用户友好的命令行接口变得简单和直观。
使用方法
1> 实例化ArgumentParser
# 实例化
# 创建一个 ArgumentParser 对象
# ArgumentParser 对象包含将命令行解析成 Python 数据类型所需的全部信息。
parser = argparse.ArgumentParser(description = 'segmentaion netword')
description : 描述所创建的ArgumentParser是干啥的 用途
2>使用 使用add_argument函数添加参数
parser.add_argument('--cfg',
help='experiment configure file name',
default="experiments/cityscapes/ddrnet_slim.yaml",
type=str)
parser.add_argument('--seed', type=int, default=304)
parser.add_argument("--local_rank", type=int, default=-1)
parser.add_argument('opts',
help="Modify config options using the command-line",
default=None,
nargs=argparse.REMAINDER)
用于向 ArgumentParser
对象添加一个命令行参数。
name_or_flags
:参数的名称或标志,例如'--input'
或'input'
。action
:指定参数的动作,常见的有'store'
(存储值)、'store_const'
(存储常量)、'append'
(将值添加到列表中)等。nargs
:指定参数接受的值的数量,如N
(接受 N 个值)、'?'
(接受 0 或 1 个值)、'*'
(接受 0 或多个值)等。const
:用于指定常量值,仅在action='store_const'
或nargs='?'
时使用。default
:默认值,当命令行中未提供该参数时使用。type
:用于将输入值转换为指定类型,例如int
、float
等。choices
:一个集合,参数的值必须是集合中的一个。required
:布尔值,指示参数是否为必需的。help
:参数的帮助信息,会显示在帮助文档中。metavar
:用于指定帮助信息中显示的参数名称
3> 使用parse_args解析参数
args = parser.parse_args()
解析命令行参数,并返回一个包含参数值的 Namespace
对象。如果 args
参数被指定,则解析该参数列表,否则解析 sys.argv
中的参数。
args
:一个可选的列表或字符串,指定要解析的命令行参数。
4> 帮助信息
print_help(self, file=None)
打印帮助信息。如果提供 file
参数,则将帮助信息输出到该文件对象;否则,打印到标准输出。
5>示例
比如说运行训练脚本的时候指定用哪个网络的yaml配置文件
python -m torch.distributed.launch --nproc_per_node=1 tools/train.py --cfg experiments/cityscapes/ddrnet23_slim.yaml
python tools/train.py --cfg experiments/cityscapes/ddrnet23_slim.yaml 使用 experiments/cityscapes/ddrnet23_slim.yaml进行训练