zoukankan      html  css  js  c++  java
  • Python读取yaml和ini文件格式

    # yaml的认识

      yaml另一种标记语言。yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文件,看了yaml后,发现这个更直观,更方便,有点类似于json格式。

    1.yaml的基本语法规则:

    • 大小写敏感
    • 使用缩进表示层级关系
    • 缩进时不允许使用Tab键,只允许使用空格。
    • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
    • #表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样。

    2.yaml支持的数据结构有三种:

    • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
    • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
    • 纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期。

    3.yaml的写法:

      键值对:

        1.yaml里面的键值对,也就是python里面的字典(dict)数据类型

    # yaml
    
    username: administrator
    password: 123456
    # python3.8
    {
    "username": "administrator",
    "password": "123456",
    }

    2.字典嵌套字典

    # yaml
    
    userinfo:
        username: administrator
        password: 123456
    # python3.8
    "userinfo": {
            "username": "administrator",
            "password": "123456",
            }

      Python读取yaml文件,先用open方法读取文件数据,再通过load方法转成字典,这个load跟json里面的load是相似的

    # coding:utf-8
    import yaml
    import os
    
    # 获取当前脚本所在文件夹路径
    curPath = os.path.dirname(os.path.realpath(__file__))
    # 获取yaml文件路径
    yamlPath = os.path.join(curPath, "test.yaml")
    # open方法打开直接读出来
    f = open(yamlPath, 'r', encoding='utf-8')
    cfg = f.read()
    print(type(cfg))  # 读出来是字符串
    print(cfg)
    d = yaml.load(cfg)  # 用load方法转字典
    print(d)
    print(type(d))

      序列(list)

        数字读出来是int/float类型

    - administrator1: 333333
    - administrator2: 111111
    - administrator3: 222222
    # python3.8
    [{'administrator1': 333333},
    {'administrator2': 111111},
    {'administrator3': 222222}]

      混合使用(list嵌套dict  //  dict嵌套list)

      1.list嵌套dict

    - user: administrator1
      psw: '333333'
    - user: administrator2
      psw: '111111'
    - user: administrator3
      psw: '222222'
    # python3.8
    
    [{'user': 'administrator1', 'psw': '333333'},
    {'user': 'administrator2', 'psw': '111111'},
    {'user': 'administrator3', 'psw': '222222'}]

       2.dict嵌套list

    userinfo1:
        - administrator1
        - '333333'
    userinfo2:
        - administrator2
        - '111111'
    userinfo3:
        - administrator3
        - '222222'
    # python3.8
    
    {'userinfo1': ['administrator1', '333333'],
    'userinfo2': ['administrator2', '111111'],
    'userinfo3': ['administrator3', '222222']}

    # ini的认识

    ---实战经历

    [capture_base]
    Face_min_px=80
    Face_max_px=1000
    Skin_threshold=0.1
    Capture_module=离开后抓拍
    Upload_threshold=0
    Definition_filter=0.00
    Upload_way=人脸
    Occlusion_face=0.10
        def operate_capture_config(self):
            config = configparser.RawConfigParser()
            config.read(cfg3, encoding='utf-8')
            item = config.items("capture_base")
    
            self.MyFace_min_px = item[0][1]
            self.MyFace_max_px = item[1][1]
            self.MySkin_threshold = item[2][1]
            self.MyCapture_module = item[3][1]
            self.MyUpload_threshold = item[4][1]
            self.MyDefinition_filter = item[5][1]
            self.MyUpload_way = item[6][1]
            self.MyOcclusion_face = item[7][1]
            return self.MyFace_min_px, self.MyFace_max_px, self.MySkin_threshold, self.MyCapture_module, self.MyUpload_threshold, self.MyDefinition_filter, self.MyUpload_way, self.MyOcclusion_face
  • 相关阅读:
    Epipe
    手机WiFi万能钥匙查看破解的password和手机查询命令收集
    解决duilib使用zip换肤卡顿的问题(附将资源集成到程序中的操作方法)
    OpenProcess、GetExitCodeProcess、TerminateProcess
    QlikView图表显示同比数据
    系统出现bootmgr is missing解决方式,戴尔dellserver装系统须要特别注意的问题
    导出结果跟查询结果不一致
    MongoDB -- 介绍
    CentOS上编译安装OpenCV-2.3.1与ffmpeg-2.1.2
    js 获取读取cookie
  • 原文地址:https://www.cnblogs.com/wzhqzm/p/14314368.html
Copyright © 2011-2022 走看看