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

 

posted @ 2021-01-22 17:13  弹弹大魔王  阅读(121)  评论(0编辑  收藏  举报