写点什么

好用的配置工具 yaml | python 小知识

作者:AIWeker
  • 2023-04-20
    福建
  • 本文字数:892 字

    阅读完需:约 3 分钟

好用的配置工具yaml | python小知识

配置是开发中常用的手段,通过配置可以灵活的设置可变的参数,而不需要调整代码。


python 中有使用不同的文件格式来做配置,如 json,xml 等。今天这里分享一个好用的配置工具 yaml 文件。


首先我们来了解下 yaml 的文件格式。

1.yaml 文件格式

  • 区分大小写;

  • 使用缩进表示层级关系;

  • 使用空格键缩进,而非 Tab 键缩进

  • 缩进的空格数目不固定,只需要相同层级的元素左侧对齐;

  • 文件中的字符串不需要使用引号标注,但若字符串包含有特殊字符则需用引号标注;

  • 注释标识为 #、举个例子:


network: channel: 3 lr: le-3dataset: data: [1, 2, 3] name: bsr is_use: true nul_val: null another: ~ param: 12.1alist:  - a  - b  - c
复制代码

2.读取 yaml 文件

yaml 文件是通过 pyyaml 包来解析的, 安装如下:


pip install pyyaml
复制代码


读取文件如下:


import yamlimport osyaml_file =  './conf.yml'with open(yaml_file, 'r', encoding="utf-8") as file:    file_data = file.read()    data = yaml.safe_load(file_data)    print(data)    print("类型:", type(data))
# {'network': {'channel': 3, 'lr': 'le-3'}, 'dataset': {'data': [1, 2, 3], 'name': 'bsr', 'is_use': True, 'nul_val': None, 'another': None, 'param': 12.1}, 'alist': ['a', 'b', 'c']}# 类型: <class 'dict'>
复制代码


由上可知,yaml 文件经过解析以后是以 python 字典对象存在的。通过对比 yaml 文件和 dict 数据,我们发现:


  • yaml 可以支持 python 常用的对象类型,如整形,浮点型,列表,字典, None,布尔型等

  • yaml 中:形成了 key:value 的字典映射,可以方便通过 key 获取

  • yaml 中的字符不需要额外的引号,yaml 自动识别

  • None 可以通过 null 或者~来表示

  • yaml 文件的缩进表示层级,不同层级嵌套表示字典的不同嵌套

  • -表示列表的某个元素值


是不是超级好用?


# 3print(data.get('network').get('channel'))
# [1, 2, 3]print(data.get('dataset').get('data'))
复制代码


需要注意的是: 上面 yaml 文件中 lr: 1e-3 这种科学计数法并没有正确识别, 可以调整成lr: 1.0e-3即可识别;


另外 yaml 中也可以进行强制类型转换(通过!!) 格式如下


test: str_vale: !!str 1
复制代码


读取 str_vale 为 string 类型


希望对你有帮助!

发布于: 刚刚阅读数: 4
用户头像

AIWeker

关注

InfoQ签约作者 / 公众号:人工智能微客 2019-11-21 加入

人工智能微客(aiweker)长期跟踪和分享人工智能前沿技术、应用、领域知识,不定期的发布相关产品和应用,欢迎关注和转发

评论

发布
暂无评论
好用的配置工具yaml | python小知识_Python_AIWeker_InfoQ写作社区