PYTHON 的 YAML 和PKL

原创 2016年08月29日 12:49:41
要用到,于是在网上抄了几段:

  • YAML的可读性好。
  • YAML和脚本语言的交互性好。
  • YAML使用实现语言的数据类型。
  • YAML有一个一致的信息模型。
  • YAML易于实现。

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

  • YAML可以基于流来处理;
  • YAML表达能力强,扩展性好。

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

更多的内容及规范参见http://www.yaml.org

语法

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     也行



Yaml代码  收藏代码  /  d:/tree.yml./
  1. tree format  
  2. treeroot:  
  3.     branch1:  
  4.         name: Node 1  
  5.         branch1-1 
  6.             name: Node 1-1  
  7.     branch2:  
  8.         name: Node 2  
  9.         branch2-1 
  10.             name: Node 2-1  



Python代码  收藏代码
  1. import yaml  
  2. open('d:/tree.yml' 
  3. dataMap yaml.load(f)  
  4. f.close()  
  5.   
  6. #下面是 print  dataMap的结果  
  7. {'treeroot'{'branch1'{'branch1-1'{'name''Node 1-1'},  
  8.     'name''Node 1'},  
  9.     'branch2'{'branch2-1'{'name''Node 2-1'},  
  10.     'name''Node 2'}}}  



Python代码  收藏代码
  1. import yaml  
  2. open('d:/newtree.yaml'"w" 
  3. yaml.dump(dataMap, f)  
  4. 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 - 正则表达式指南

从这里学习而得:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Py...
  • smile_benson
  • smile_benson
  • 2016年05月19日 23:28
  • 603

【原创】面试题 python …

简单说一下,这是上海一家公司给我的两道题,先让我做出来,然后再进行进一步的沟通,但是我已经找到工作了,所以就把这道题发了过去。。    Given a array of 10,000 random...
  • u012731379
  • u012731379
  • 2017年03月20日 14:45
  • 57

利用Python PIL、cPickle将图片读取和保存为pkl格式文件

将表情图片生成pkl格式的文件,代码如下。import cPickle import os import json import pylab import numpy from...
  • u014365862
  • u014365862
  • 2015年08月26日 18:17
  • 4723

Python如何读取pkl文件

以mnist.pkl为例 方法一: 然而我的还是会出现EOFError,无解,郁闷方法二: dataset=’mnist.pkl’ datasets = load_data(dataset...
  • lvfeiya
  • lvfeiya
  • 2016年11月28日 19:15
  • 5880

【原创】Python 反射 ex…

很多时候,要想多可配置、可扩展的程序,反射用到的实在有点多。也可能使我认知有限,但是暂时也只能这么想,有好的想法邮箱我~~qq1126918258@gmail.com 看看我以前的实现方法。。 c...
  • u012731379
  • u012731379
  • 2017年03月20日 14:45
  • 38

深度学习之图片转成pkl格式的训练集

怎么使用python将文件夹下的图片转换pkl格式的训练集。 首先需要读取图片和图片所属的类别。 主要思路是:1.生成train.Thumbs.db                       ...
  • csuzhaoqinghui
  • csuzhaoqinghui
  • 2017年01月11日 19:20
  • 1790

java 转义字符

中转义字符: 1.八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377'  \0:空字符  2.Unicode转义字符:\u + 四个十六进制数字;0~65535  \u0000:空...
  • qq741997129
  • qq741997129
  • 2014年06月05日 16:04
  • 1652

将图片生成pkl格式的文件(多层循环)

这篇博文是对之前的博文的改写。之前博文请看:这里写链接内容 - 首先: - 统计所有图片的张数,用来初始化存放样本的向量和标签向量;图片是放在data下的第2层文件中,其中自己文件的不同,自行...
  • u014365862
  • u014365862
  • 2015年08月29日 12:59
  • 3227

HTML中&nbsp 和空格的区别

刚刚学写HTML代码时候,我曾碰到这样的问题:在代码里加入一连串空格,在浏览器上显示的时候,却只看到一个空格。常用的解决方法是,用" "来代替空格,一个" "相当于一个空格,多加几个" "就可以把空格...
  • you1314520me
  • you1314520me
  • 2013年09月19日 18:26
  • 44788

HTML中 &emsp等空格的区别

HTML提供了5种空格实体(space entity),它们拥有不同的宽度,非断行空格( )是常规空格的宽度,可运行于所有主流浏览器。其他几种空格(     &thins...
  • linzhaogui
  • linzhaogui
  • 2015年12月30日 17:17
  • 9460
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PYTHON 的 YAML 和PKL
举报原因:
原因补充:

(最多只允许输入30个字)