栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python读取Yaml文件和Yaml文件常见数据格式

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python读取Yaml文件和Yaml文件常见数据格式

话不多说,直接上代码。

file_reader.py # 写一个常用的读取Yaml文件的类。封装好,方便后续使用。

import os
import yaml  # 通过 pip install pyyaml 得到

class YamlReader():

    def __init__(self, yamlf):

        if os.path.exists(yamlf):
            self.yamlf = yamlf
        else:
            raise FileExistsError("文件不存在!")
        self._data = None  # 私有属性

    @property
    def data(self):
        # 如果是第一次调用data,读取yaml文档,否则返回之前保存的数据
        if not self._data:  # 如果不存在,则读取.
            with open(self.yamlf, 'rb') as f:
                self._data = list(yaml.safe_load_all(f))  # load返回的是一个生成器,需要list转换
        return self._data[0]

yaml_demo.yaml # 文件的内容如下,作为一个示例文本。

Yaml常见数据格式:
# 这是一个yaml文件示例文档.
text1: 字符串  # 直接写,是字符串(键值对的字符串),但是数字的话,直接是整型.
person: # person:[{"name":"张三"},{"age":18}]
  - name: 张三
  - age: 18  # 数字的整型
  - gender: 男
  - favorite: [ '喝酒','抽烟','打游戏' ]  # 这里能得到一个列表.{'favorite': ['喝酒', '抽烟', '打游戏']}
not_set1: { 'A','B','C' }  # 并不能直接得到一个集合,因为已经红框标注了.'set1': {'A': None, 'B': None, 'C': None}
set2: !!set { 'A','B','C' }  # 强制转换为集合。这样就能得到集合类型了. 'set2': {'C', 'B', 'A'}}
num_str: !!str 15  # 强制转换为字符串。强制将数字转化为字符串。
str_num: !!int '1991'  # 字符串强制转换为数字。
boolean: !!bool 'true'  # 强制转换为布尔值
str_float: !!float '19.2345'  # 强制转换为浮点型。
#str_bin: !!binary 'v' # 强制转换为二进制
dic1: { 'A': 1,"B": 2 }  # 'dic1': {'A': 1, 'B': 2}}  能得到一个字典.
dic2: # 这也是一个字典.
  A: 2
  B: 3
not_tuple1: (1,2,3)  #  'tuple1': '(1,2,3)'  并不能直接得到一个元组.
not_tuple2: # 'tuple2': '1 2 3',也不能直接拿到一个元组.
  1
  2
  3
#tuple3: !!tuple 1,2,3  # 非法写法
A:  # 不能直接写A不带冒号,会报错。 写了冒号不写值,是一个没有值的键值对。
---   # 多文本了,读取方式要变,不然只能读取到这个上面的信息.
set3: 1
---  # 多文本2
data5: 2
1: 2

read_yaml_demo.py # 读取yaml文件的返回数据。

全部数据:{'text1': '字符串', 'person': [{'name': '张三'}, {'age': 18}, {'gender': '男'}, {'favorite': ['喝酒', '抽烟', '打游戏']}], 
'not_set1': {'A': None, 'B': None, 'C': None}, 'set2': {'B', 'C', 'A'}, 'num_str': '15', 'str_num': 1991, 'boolean': True, 
'str_float': 19.2345, 'dic1': {'A': 1, 'B': 2}, 'dic2': {'A': 2, 'B': 3}, 'not_tuple1': '(1,2,3)', 'not_tuple2': '1 2 3', 'A': None}
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
type:          text1: 字符串
type:         person: [{'name': '张三'}, {'age': 18}, {'gender': '男'}, {'favorite': ['喝酒', '抽烟', '打游戏']}]
type:         not_set1: {'A': None, 'B': None, 'C': None}
type:          set2: {'B', 'C', 'A'}
type:          num_str: 15
type:          str_num: 1991
type:         boolean: True
type:        str_float: 19.2345
type:         dic1: {'A': 1, 'B': 2}
type:         dic2: {'A': 2, 'B': 3}
type:          not_tuple1: (1,2,3)
type:          not_tuple2: 1 2 3
type:     A: None
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005439.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号