html网站结构解决方案,霸州有做滤芯网站的吗,做公司网站需要学哪些,学校网站如何建设Python的序列化是指把变量从内存中变为可以储存/传输的数据/文件的过程. 在Python中叫pickling#xff0c;在其他语言中也被称之为serialization#xff0c;marshalling#xff0c;flattening等等#xff0c;都是一个意思。序列化之后#xff0c;就可以把序列化后的内容写…Python的序列化是指把变量从内存中变为可以储存/传输的数据/文件的过程. 在Python中叫pickling在其他语言中也被称之为serializationmarshallingflattening等等都是一个意思。序列化之后就可以把序列化后的内容写入磁盘或者通过网络传输到别的机器上。反过来把变量内容从序列化的对象重新读到内存里称之为反序列化即unpickling。在Python中最基础的实现序列化的两个模块是cPickle和pickle模块, 功能基本一样, 前者是C写的更快, 后者是python写的会慢点. 一般优先使用cPickle. 这里只介绍cPickle, 一般用其四个函数(dump、dumps、dump、loads)也就OK了, pickle包含了类和另外一些内容, 更多细节可以看官方手册。一般引用时我们会做如下引用try:import cPickle as pickleexcept ImportError:import pickle一、导出数据 和 导入数据1、导出数据dump 导出数据(序列化)主要有两个函数:dump(data,file_handle[, protocol]) : 将数据序列化到文件.dumps(data[, protocol]) : 将数据序列化成字符串.protocol是数据流处理策略:0: ascii串保存, 默认形式, 方便人读取1: 旧式兼容性较强2进制形式2: 支持新式类的2进制模式,Python2.3开始引入.2、导入数据load 载入数据(反序列化)主要有两个函数:load(file) : 将序列化数据从文件读入返回数据.loads(string) : 将字符串的序列化数据读入并返回数据.二、示例1、写入文件及读取#!/usr/bin/env python# codingutf-8# code from www.361way.comtry:import cPickle as pickleexcept:import pickleobj {a : b, c : d}obj2 [0, 1, 1, 0, 1]f open(obj.pkl, wb)pickle.dump(obj, f, protocol2)pickle.dump(obj2, f, protocol2)f.close()f open(obj.pkl, rb)x1 pickle.load(f)x2 pickle.load(f)print x1,x2f.close()这里保存数据的时候选用的是protocol 2所以保存后的obj.pkl 打开会发现是乱码 。这里需要注意的是pickle不能指定key信息只能按顺序一次次的load结果 。这点不像shelve模块 。2、写入内存及读写示例1中通过open将数据写入二进制文件或读取通过StringIO模块也可以将数据在内存中进行写入和读取 示例如下try:import cPickle as pickleexcept:import pickleimport pprintfrom StringIO import StringIOclass SimpleObject(object):def __init__(self, name):self.name namel list(name)l.reverse()self.name_backwards .join(l)returndata []data.append(SimpleObject(pickle))data.append(SimpleObject(cPickle))data.append(SimpleObject(last))# Simulate a file with StringIOout_s StringIO()# Write to the streamfor o in data:print WRITING: %s (%s) % (o.name, o.name_backwards)pickle.dump(o, out_s)out_s.flush()# Set up a read-able streamin_s StringIO(out_s.getvalue())# Read the datawhile True:try:o pickle.load(in_s)except EOFError:breakelse:print READ: %s (%s) % (o.name, o.name_backwards)执行结果如下$ python pickle_stream.pyWRITING: pickle (elkcip)WRITING: cPickle (elkciPc)WRITING: last (tsal)READ: pickle (elkcip)READ: cPickle (elkciPc)READ: last (tsal)3、pickle对像元素操作在成为pickle的对象后即为列表对象由此可对list进行一系列的操作如下是一个append的示例 pw open(test1,wb) pw.write(pickle.dumps([a,b])) pw.close() pr open(test1,rb) prf pickle.load(pr) print(prf)[a, b] print(prf.append(c))None print(prf)[a, b, c]