argparse.ArgumentParser
文章目录
Python参数解析工具argparse.ArgumentParser()和实例详解
创建解析器 parser=argparse.ArgumentParser()
添加参数 parser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
每个参数解释:
name or flags:字符串的名字或者列表。
action:当参数在命令行中出现时使用的动作。
nargs:应该读取的命令行参数个数
const:不指定参数时的默认值
type:命令行参数应该被转换成的类型
choices:参数可允许的值的另一个容器
required:可选参数是否可省略
help:参数的帮助信息
metavar - 在 usage 说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称.
dest - 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线
解析参数 parser.parse_args()
调用参数 exp_path = paras.exppath
import argparsedef parse_args_and_config():parser = argparse.ArgumentParser(description=globals()["__doc__"])parser.add_argument("--config", type=str, required=True, help="Path to the config file", default="/home")# -V=XXX 或 --verson=parser.add_argument("-V", "--verson",type=int,default=3.7)# 出现 -t 或 --T 为true, 否则为false (-t=true这样写是错误的)parser.add_argument("-t", "--T", action="store_true")args = parser.parse_args()# arg.长 args.verson 不能args.Vprint(args.config, args.verson, args.T)parse_args_and_config()
# 调用方式 python myargparse.py --config=hhh
argparse.Namespace()
加载配置文件,将配置文件中的信息保存到argparse中
配置文件格式是cifar10.yml 即yml格式,内部内容以字典形式保存
data:dataset: "CIFAR10"image_size: 32num_workers: 4model:type: "simple"in_channels: 3ema: Trueresamp_with_conv: True
XXXX:dd:"ss"
加载配置文件
with open("D:\\BaiduSyncdisk\\code\\deeplearn\\paper_exerpriment\\001diffusion_model\\002_DDIM\\ddim-main\\configs\\cifar10.yml") as f:config = yaml.safe_load(f)print(type(config)) # <class 'dict'>
new_config = dict2namespace(config)
print(new_config)
在将字典存储到 argparse.
def dict2namespace(config):print(11)namespace = argparse.Namespace()for key, value in config.items():# print(key, value)if isinstance(value, dict):new_value = dict2namespace(value)else:new_value = valuesetattr(namespace, key, new_value)return namespace```