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
  • 相关阅读:
    (原)Lazarus 异构平台下多层架构思路、DataSet转换核心代码
    (学)新版动态表单研发,阶段成果3
    (学) 如何将 Oracle 序列 重置 清零 How to reset an Oracle sequence
    (学)XtraReport WebService Print 报错
    (原)三星 i6410 刷机 短信 无法 保存 解决 办法
    (原) Devexpress 汉化包 制作工具、测试程序
    linux下网络配置
    apache自带ab.exe小工具使用小结
    Yii::app()用法小结
    PDO使用小结
  • 原文地址:https://www.cnblogs.com/wzhqzm/p/14314368.html
Copyright © 2011-2022 走看看