YAML的可读性好。

YAML和脚本语言的交互性好。

YAML使用实现语言的数据类型。

YAML有一个一致的信息模型。

YAML易于实现。

上面5条也就是XML不足的地方。同时,YAML也有XML的下列优点:

YAML可以基于流来处理;

YAML表达能力强,扩展性好。

总之,YAML试图用一种比XML更敏捷的方式,来完成XML所完成的任务。

语法

http://zh.wikipedia.org/wiki/YAML

Structure通过空格来展示。Sequence里的项用"-"来代表,Map里的键值对用":"分隔.

这几乎就是所有的语法了.

注意在YAML中,字串不一定要用双引号标示。另外,在缩排中空白字符的数目并不是非常重要,只要相同阶层的元素左侧对齐就可以了(不过不能使用TAB字符)。

比如……

一般YAML文件扩展名为.yaml。比如:John.yaml

如何写yaml?

name: Tom Smith

age: 37

spouse:

name: Jane Smith

age: 25

children:

- name: Jimmy Smith

age: 15

- name1: Jenny Smith

age1: 12

John今年37岁,有一个幸福的四口之家。两个孩子Jimmy 和Jenny活泼可爱。妻子Jane年轻美貌。

如果深入研究的话还可能发现一些社会问题。

可见YAML的可读性是不错。

http://pyyaml.org/wiki/PyYAMLDocumentation

yaml在python上的具体实现:PyYaml

将yaml写成配置脚本test.yaml

,以下介绍如何读写yaml配置。

使用python的yaml库PyYAML。http://pyyaml.org/

安装到python

lib下后就可以正常使用了。

或者在C:/python 下,用命令行 pip

install pyyaml  也行

# tree format

treeroot:

branch1:

name: Node 1

branch1-1:

name: Node 1-1

branch2:

name: Node 2

branch2-1:

name: Node 2-1

Python代码 

import yaml

dataMap = yaml.load(f)

f.close()

#下面是 print

dataMap的结果

{'treeroot': {'branch1': {'branch1-1': {'name': 'Node 1-1'},

'name': 'Node 1'},

'branch2': {'branch2-1': {'name': 'Node 2-1'},

'name': 'Node 2'}}}

Python代码 

import yaml

f = open('d:/newtree.yaml', "w")

yaml.dump(dataMap, f)

f.close()

#这样就会在d盘下生成一个新的newtree.yaml

文件

再说一下PKL

python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

基本接口:

pickle.dump(obj, file, [,protocol])

注解:将对象obj保存到文件file中去。

protocol为序列化使用的协议版本,0:ASCII协议,所序列化的对象使用可打印的ASCII码表示;1:老式的二进制协议;2:2.3版本引入的新二进制协议,较以前的更高效。其中协议0和1兼容老版本的python。protocol默认值为0。

file:对象保存到的类文件对象。file必须有write()接口, file可以是一个以'w'方式打开的文件或者一个StringIO对象或者其他任何实现write()接口的对象。如果protocol>=1,文件对象需要是二进制模式打开的。

pickle.load(file)

注解:从file中读取一个字符串,并将它重构为原来的python对象。

file:类文件对象,有read()和readline()接口。

import pickle

data1 = {'a': [1, 2.0, 3, 8],

'b':

('string', 'Unicode string'),

'c':

None}

selfref_list = [1, 2, 3]

#selfref_list.append(selfref_list)

output = open('D:/data.pkl', 'wb')

# Pickle dictionary using protocol

0.

pickle.dump(data1, output)

# Pickle the list using the highest protocol

available.

pickle.dump(selfref_list, output,

-1)

output.close()

反序列化

import

pprint, pickle

pkl_file =

open('D:/data.pkl', 'rb')

data1 =

pickle.load(pkl_file)

pprint.pprint(data1)

data2 =

pickle.load(pkl_file)

pprint.pprint(data2)

pkl_file.close()

python 读取pkl_PYTHON 的 YAML 和PKL相关推荐

  1. python 读取pkl_Python如何读取pkl文件

    以mnist.pkl为例 方法一: 然而我的还是会出现EOFError,无解,郁闷 方法二: dataset='mnist.pkl' datasets = load_data(dataset) tra ...

  2. python 读取pkl_python 解压pkl文件的方法

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  3. python读取加载并保存pkl文件

    1.读取加载pkl文件 import _pickle as cPicklef=open('./valid.pkl','rb+') info=cPickle.load(f) print(info) 2. ...

  4. python 读取多个yaml文件_Python读取yaml文件多层菜单

    1 #!/usr/bin/python34 2 importsys,os,re,yaml,time3 #reload(sys) 4 #sys.setdefaultencoding('utf-8') 5 ...

  5. python读取配置文件获取所有键值对_python笔记14-读取yaml配置文件(pyyaml)

    yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文 ...

  6. python 读取yml文件_python读取yaml配置文件

    什么是yaml 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大, 2.支持多种语言:p ...

  7. python读取yaml文件_python 怎么读取yaml文件

    yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language:另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文件 ...

  8. python读取yaml配置文件的方法

    yaml简介 1.yaml [ˈjæməl]: Yet Another Markup Language :另一种标记语言.yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文 ...

  9. 如何使用Python读取pkl文件

    如何使用Python读取pkl文件: import pickle# rb是2进制编码文件,文本文件用r f = open(r'xxxxx.pkl','rb') data = pickle.load(f ...

最新文章

  1. 详解在Visual Studio中使用git版本系统
  2. Jupyter Notebook知识点
  3. java生成三级级联的数据,微信小程序三级级联,自定义json数据源
  4. .net 任务(Task)
  5. android 开发艾特功能,Android Binder
  6. Java笔记11-【异常、线程】
  7. 讲座记录——大数据共享和交易的挑战与初探
  8. 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 中的标识列插入显式值错误的解决方法...
  9. UI设计素材|等轴测图(2.5D插画)
  10. 为什么地球上只有一个硅谷?
  11. 在+android+4.4+系统使用+flash功能,科技来电:flash王者归来 全面支持安卓4.2+
  12. matlab 数字显示完整,如何在matlab中同时显示字符串和数字?
  13. 北京航空航天大学计算机学院 赵,北京航空航天大学计算机学院计算机应用技术导师介绍:夏春和...
  14. [MQ]消息队列与企业服务总线的简单比较,MQESB
  15. think在PHP中什么意思,thinkphp框架是什么意思
  16. Linux运维工程师综合面试题
  17. OpenCV制作一个类“全能扫描王”的简易扫描软件
  18. cgi进程设置多少 宝塔_比宝塔面板还要强大的Linux服务器端管理面板——AppNode...
  19. 苹果icloud登录_如何在Windows电脑上使用苹果iCloud服务?
  20. 献给1986,1987年出生的人

热门文章

  1. 专栏结语:基于spring cloud的工具栈
  2. 大数据技术与应用专业
  3. 电脑桌面计算机总是自动打开,电脑开机后自动打开很多软件怎么办
  4. 家庭最好用的投影仪,投影仪怎么选择?
  5. LotusScript_导出数据库路径和名称
  6. java yearmonth_Java Year atMonth(Month month)用法及代码示例
  7. date.now()
  8. 程序员应该了解的 “基金” 小常识
  9. Python安装超详细教程
  10. 闯关的lulu (有趣的规律题)