yaml文件 YAML是专门⽤来写配置⽂件的语⾔,远⽐JSON格式⽅便。 YAML语⾔的设计⽬标,就是⽅便⼈类读写。 YAML是⼀种⽐XML和JSON更轻的⽂件格式,也更简单更强⼤,它可以通过缩进来表⽰结构,是不是听起来就和Python很搭? 顾名思义,⽤语⾔编写的⽂件就可以称之为YAML⽂件。PyYaml是Python的⼀个专门针对YAML⽂件操作的模块,使⽤起来⾮常简单 安装 pip install pyyaml # 如果是py2,使⽤ pip install yam 在Python中,`yaml`模块(通常通过`PyYAML`库实现)是处理YAML文件的核心工具。YAML(YAML Ain't Markup Language)是一种轻量级的数据序列化语言,设计目标是让人类能够方便地阅读和编写,同时也能被计算机程序轻松解析。与XML和JSON相比,YAML具有更简洁的结构,使用缩进来表示层次关系,这与Python的代码风格相吻合。 `PyYAML`是Python中用于处理YAML的模块,可以方便地进行YAML文件的读写操作。要安装`PyYAML`,可以使用以下命令: ```bash pip install pyyaml ``` 对于Python 2,命令则是: ```bash pip install yaml ``` **一、PyYAML的简单使用** 1. **load()** 方法:这个方法用于从YAML字符串或文件中加载数据,返回一个Python对象。例如: ```python import yaml yaml_str = """ name: 一条大河 age: 1956 job: Singer """ y = yaml.safe_load(yaml_str) print(y) ``` 输出: ```python {'name': '一条大河', 'age': 1956, 'job': 'Singer'} ``` 2. **load_all()** 方法:当YAML文档包含多块内容时,可以使用`load_all()`解析所有文档。例如,读取包含多个文档的`yaml_test.yaml`文件: ```python with open("./yaml_test.yaml", 'r', encoding='utf-8') as ymlfile: cfg = yaml.safe_load_all(ymlfile) for data in cfg: print(data) ``` 3. **dump()** 方法:将Python对象转换为YAML字符串。例如: ```python json_data = {'name': '一条大河', 'age': 1956, 'job': ['Singer', 'Dancer']} y = yaml.dump(json_data, default_flow_style=False) print(y) ``` 这会输出类似以下的YAML字符串: ```yaml age: 1956 job: - Singer - Dancer name: 一条大河 ``` 4. **dump()** 也可以直接将内容写入YAML文件: ```python with open('./yaml_write.yaml', 'w') as f: yaml.dump(json_data, f) ``` 5. **dump_all()** 方法:用于将多个Python对象写入一个YAML文件,每个对象用一个新的文档块表示。例如: ```python obj1 = {"name": "river", "age": 2019} obj2 = ["Lily", 1956] obj3 = {"gang": "ben", "age": 1963} obj4 = ["Zhuqiyu", 1994] with open('./yaml_write_all.yaml', 'w', encoding='utf-8') as f: yaml.dump_all([obj1, obj2, obj3, obj4], f) ``` **二、YAML的语法规则和数据结构** 1. **大小写敏感**:YAML中的关键字和值都是大小写敏感的。 2. **缩进表示层级**:每个层级通过空格缩进来区分,不能使用制表符(tab)。 3. **列表项表示**:列表项前使用“-”。 4. **键值对表示**:字典的键和值之间用冒号“:”分隔。 5. **注释**:以“#”开头的行被视为注释,直到行末。 **三、YAML的特殊格式** 在`yaml_write_all.yaml`中,有些条目前面有一个“-”,有些有两个。这是因为YAML解析器在遇到两个连续的“-”时,将其视为一个列表的项目,而单个“-”表示一个独立的文档块。例如,以下YAML: ```yaml - item1 - item2 - - document2 - itemA ``` 会被解析为: - 一个包含三个项目的列表(item1, item2, 和一个空项) - 另一个独立的文档块,其中包含一个包含两个项目的列表(document2, itemA) 在读取YAML文件时,`load_all()`会将每个文档块解析为单独的Python对象,通常是字典或列表。 总结,`PyYAML`提供了一套完整的API,使得Python开发者能够方便地与YAML格式交互,无论是读取配置文件,还是序列化和反序列化数据。其简洁的语法和与Python的天然契合,使得YAML成为了Python中处理配置和数据交换的流行选择。
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/release/download_crawler_static/88276036/bg1.jpg)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/51cd70cb3a8d4a09b10ecfe674378cac_qq_20660115.jpg!1)
![avatar-vip](https://csdnimg.cn/release/downloadcmsfe/public/img/user-vip.1c89f3c5.png)
- 粉丝: 765
- 资源: 232
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)