yaml读取参数介绍

发布时间:2024年01月13日

安装Yaml第三方库

  • 主要是介绍对应的命令如下所示【以下命令都可,选一个即可】

    • pip install pyyaml
      conda install pyyaml
      

yaml文件介绍

  • yaml读取文件具体可以参考对应default.yaml文件【在下文文件案例给出】,具体形式如下所示。yaml对大小写和缩进敏感,如果在同一个缩进里面即为为同一层级字典形式,强制转化为!!str 11【从int类型转化为str类型】

  • yaml存储了三种数据结构,即为对象、数组、纯量【在python对应为字典,列表,基本数据结构】

    • 对象,即为键值对的集合,在python读取后为字典

      • 可以嵌套/不嵌套,具体如下所示,config为不嵌套,nest_config为嵌套形式

        • config: usage_yaml
          nest_config:
          	para_1 : 1
          	para_2 : 2
          
    • 数组,一次按照次数排列,具体在python读取后为列表

      • 数组具体排列形式如下所示

        • para_list:
          	- 1
          	- 2
          	- 3
          
    • 纯量(scalars),如字符串,布尔值,整数,浮点数,NULL,时间【为ISO8601格式】、日期【ISO8601格式】等

      • para_str: "1"
        para_boolen: true
        para_int: 1
        para_float: 2.0
        para_null: ~
        para_datetime: 2024-01-13
        para_time: 2001-12-14t21:59:43.10-05:00
        

注意事项

  • 本版本的yaml为Version: 5.4.1,加载的时候为yaml.load(file_stream, Loader=yaml.FullLoader)

    • 所以抛弃了yaml.load(stream)方法,
      所以会报以下错误:TypeError: load() missing 1 required positional argument: ‘Loader’【所以需要查看版本号】,如果为5.1之前,可以使用yaml.load(file)

  • 在yaml中不能使用Tab,需要使用四个space代替

  • yaml注释形式为#

  • yaml对于""和’'不敏感,但是对大小写敏感

文件案例

  • config : usage_yaml # 这里是非嵌套形式的参数
    nest_config : # 这里是嵌套形式的参数
        para_1: 1
        para_2: 2
    para_list: # 读取后为列表形式
      - 1
      - 2
      - 3
    para_str: "1" # 读取后为字符串形式
    para_boolen: true
    para_int: 1
    para_float: 2.0
    para_null: ~
    para_datetime: 2024-01-13
    para_time: 2001-12-14t21:59:43.10-05:00
    para_list_dict:
      - user: '1'
        password: '123456'
      - user: "2"
        password: '123'
    

Python读取yaml文件

  • 具体通过open函数或者with open函数读取,获取stream流对象,根据 yaml.load(file_stream, Loader=yaml.FullLoader)直接调用即可

  • 具体代码参照loadYaml.py文件

    • import yaml
      '''
      1. 本版本的yaml为Version: 5.4.1,所以抛弃了yaml.load(stream)方法,
          所以会报以下错误:TypeError: load() missing 1 required positional argument: 'Loader'
          所以在yaml.load(stream, Loader)形式的文件中输入为yaml.load(file_stream, Loader=yaml.FullLoader)
      2. 在yaml中不能使用Tab,需要使用四个space代替
      3. yaml注释形式为# 
      4. yaml对于""和''不敏感,但是对大小写敏感
      '''
      
      def load_yaml(data_dir):
          with open(data_dir) as f:
              config = yaml.load(f, Loader=yaml.FullLoader)
          f.close()
          return config
      
      if __name__ == "__main__":
          data_dir = './default.yaml'
          config = load_yaml(data_dir)
          print(config)
      

参考

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