Python脚本 | 利用argparse和.yaml配置文件同时导入参数

2023-12-23 18:07:35

需求:可以从命令行导入参数,也可以从.yaml配置文件导入参数,但前者优先级更高。即当某参数值同时存在于命令行导入、.yaml文件中时,使用前者赋值。写了一个小脚本。

import argparse, yaml, os

# 从命令行导入参数
parser = argparse.ArgumentParser()
parser.add_argument('--test_arg1')
args = parser.parse_args(parser)

# 从.yaml配置文件导入命令行没有的参数
with open(os.path.join('../configs', 'model.yaml'), 'r') as f:    # 改成自己的.yaml路径
    config = yaml.load(f, yaml.FullLoader)
    for key in config:
        if(hasattr(args, key) == False):    # 只有当命令行未传入该参数, 才运行.yaml传入
            setattr(args, key, config[key])

如果想让.yaml配置文件有更高的参数覆盖导入优先级,直接将代码中的?if(hasattr(args, key) == False) 这条语句去掉就好了

文章来源:https://blog.csdn.net/qq_45832958/article/details/135169928
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。