博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python基础-PyYaml操作yaml文件
阅读量:6799 次
发布时间:2019-06-26

本文共 2326 字,大约阅读时间需要 7 分钟。

yaml语法

格式

它的基本语法规则如下 
大小写敏感 
使用缩进表示层级关系 
缩进时不允许使用Tab键,只允许使用空格。 
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

YAML 支持的数据结构有三种 

1、对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary) 
2、数组:一组按次序排列的值,又称为序列(sequence) / 列表(list) 
3、纯量(scalars):单个的、不可再分的值

对象的一组键值对,使用冒号结构表示。

animal: pets#或者如下格式hash: { name: Steve, foo: bar }
  • 1
  • 2
  • 3
  • 4

数组

- Cat- Dog- Goldfish #或者如下格式 animal: [Cat, Dog]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

复合结构

languages: - Ruby - Perl - Python websites: YAML: yaml.org  Ruby: ruby-lang.org  Python: python.org Perl: use.perl.org
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

纯量纯量是最基本的、不可再分的值

字符串        布尔值        整数        浮点数        Null        时间        日期
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

字符串:以下是5种表现格式

str: 这是一行字符串str: '内容: 字符串's1: '内容\n字符串' s2: "内容\n字符串" str: 'labor''s day'
  • 1
  • 2
  • 3
  • 4
  • 5

yaml2种写法

我们来看一个完整的yaml配置文件

数据结构可以用类似大纲的缩排方式呈现,结构通过缩进来表示,连续的项目通过减号“-”来表示,map结构里面的key/value对用冒号“:”来分隔。样例如下:

house:  family:    name: Doe    parents:      - John      - Jane    children:      - Paul - Mark - Simone address: number: 34 street: Main Street city: Nowheretown zipcode: 12345
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

YAML也有用来描述好几行相同结构的数据的缩写语法,数组用’[]’包括起来,hash用’{}’来包括。因此,上面的这个YAML能够缩写成这样:

house:  family: { name: Doe, parents: [John, Jane], children: [Paul, Mark, Simone] } address: { number: 34, street: Main Street, city: Nowheretown, zipcode: 12345 }
  • 1
  • 2
  • 3

安装PyYaml

下载地址 

然后将其lib3\yaml包,放在python安装包lib包下,然后命令行监测是否安装成功即可 
这里写图片描述

python使用yaml

我们初始化一个yaml配置文件

house:  family:    name: Doe    parents:      - John      - Jane  address:    number: 34    street: Main Street
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
import yamlf = open('example.ini',encoding="utf-8")x = yaml.load(f)print(x) print("---------") aproject = { 'name': 'Silenthand Olleander', 'race': 'Human', 'traits': ['ONE_HAND', 'ONE_EYE'] } ret = yaml.dump(aproject) print(ret) aproject = ["a","b","c"] ret = yaml.dump(aproject) print(ret) aproject = ("a","b","c") ret = yaml.dump(aproject) print(ret) aproject = { "a":1,"b":2} ret = yaml.dump(aproject) print(ret)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

输出内容如下:

E:\python\python_sdk\python.exe E:/python/py_pro/5.configparse.py { 'house': { 'family': { 'name': 'Doe', 'parents': ['John', 'Jane']}, 'address': { 'number': 34, 'street': 'Main Street'}}} --------- name: Silenthand Olleander race: Human traits: [ONE_HAND, ONE_EYE] [a, b, c] [a, b, c] { a: 1, b: 2} Process finished with exit code 0
你可能感兴趣的文章
[转]MYSQL性能优化分享(分库分表)
查看>>
用php实现异步执行任务的队列(一)
查看>>
AngularJS表单验证操作例子分享
查看>>
RabbitMQ 的安装与工作模式
查看>>
视图的跳转,ViewController的使用 。试图出现启动消失过程
查看>>
博科300光纤交换机配置手册/操作方法/密码设置/用户指南大全
查看>>
HTML Dom
查看>>
Linux下为PHP添加扩展库的方法
查看>>
HBase(四):HBase API判断表是否存在,结果问题爆棚。。
查看>>
宏定义冲突
查看>>
cobbler-自动化部署
查看>>
我的友情链接
查看>>
tracepath
查看>>
java多线程基础复习
查看>>
我的友情链接
查看>>
iOS:使用minimumScaleFactor控制字体大小自适应
查看>>
Android Zxing条码扫描自定义控件(附代码)
查看>>
Netty学习笔记之Netty之初印象(一)
查看>>
centos7上安装knock
查看>>
Google 镜像站搜集
查看>>