文档章节

python 序列化对象

 阿豪boy
发布于 2017/09/01 19:52
字数 283
阅读 20
收藏 0

pickle.dump(obj, file[, protocol])
  序列化对象,并将结果数据流写入到文件对象中。参数protocol是序列化模式,默认值为0,表示以文本的形式序列化。protocol的值还可以是1或2,表示以二进制的形式序列化。

------------------------------------------
pickle.load(file)
  反序列化对象。将文件中的数据解析为一个Python对象。

其中要注意的是,在load(file)的时候,要让python能够找到类的定义,否则会报错:

 

import pickle
from io import StringIO
import os


class Stu:
    def __init__(self, id, name):
        self.id = id
        self.name = name

    def show(self):
        print(self.id + ' ' + self.name)


s1 = Stu('001', 'abc')
s2 = Stu('002', 'def')

with open('s.txt', 'wb') as f:
    pickle.dump(s1, f)

print(id(s1))
with open('s.txt', 'rb') as f:
    ss = pickle.load(f)
    ss.show()
    print(id(ss))
    print(ss == s1)

print(os.path.getsize('s.txt'))

with open('s.txt', 'wb') as f:
    pickle.dump(s1, f)
    pickle.dump(s2, f)
    pickle.dump(s1, f)

# 可以向一个文件序列化多个对象,只需要按照顺序取出来即可
with open('s.txt', 'rb') as f:
    ss1 = pickle.load(f)
    ss2 = pickle.load(f)
    ss3 = pickle.load(f)
    ss1.show()
    ss2.show()
    ss3.show()
    print(id(ss1))
    print(ss1 == s1)

print(os.path.getsize('s.txt'))

 

运行结果

2214182493376
001 abc
2214182486368
False
69
001 abc
002 def
001 abc
2214182486424
False
207

 

© 著作权归作者所有

共有 人打赏支持
粉丝 23
博文 1094
码字总数 737991
作品 0
西安
python中cPickle用法例子分享

python中cPickle用法例子。 在python中,一般可以使用pickle类来进行python对象的序列化,而cPickle提供了一个更快速简单的接口,如python文档所说的:“cPickle -- A faster pickle”。 cP...

mysoftsky
2014/01/10
0
0
python序列化数据本地存放

深入# 序列化的概念很简单。内存里面有一个数据结构,你希望将它保存下来,重 用,或者发送给其他人。你会怎么做?嗯, 这取决于你想要怎么保存,怎么重用,发送给谁。很多游戏允许你在退出的...

临峰不畏
2015/01/18
0
0
Python模块学习 ---- pickle, cPickle 对象序列化/反序列化

上次学习过marshal模块用于序列化和反序列化,但marshal的功能比较薄弱,只支持部分内置数据类型的序列化/反序列化,对于用户自定义的类型就无能为力,同时marshal不支持自引用(递归引用)的对...

索隆
2012/05/04
0
0
python --- json模块和pickle模块详解

  json:JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式(用于数据序列化和反序列化)。(适用于多种编程语言,可以与其他编程语言做数据交换)   pickle:...

码农47
2017/08/19
0
0
zg手册 之 python2.7.7源码分析(4)-- pyc字节码文件

什么是字节码 python解释器在执行python脚本文件时,对文件中的python源代码进行编译,编译的结果就是byte code(字节码) python虚拟机执行编译好的字节码,完成程序的运行 python会为导入的模...

东昕
2014/09/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

(一)软件测试专题——之Linux常用命令篇01

本文永久更新地址:https://my.oschina.net/bysu/blog/1931063 【若要到岸,请摇船:开源中国 不最醉不龟归】 Linux的历史之类的很多书籍都习惯把它的今生来世,祖宗十八代都扒出来,美其名曰...

不最醉不龟归
20分钟前
3
0
蚂蚁金服Java开发三面

8月20号晚上8点进行了蚂蚁金服Java开发岗的第三面,下面开始: 自我介绍(要求从实践过程以及技术背景角度着重介绍) 实习经历,说说你在公司实习所做的事情,学到了什么 关于你们的交易平台...

edwardGe
27分钟前
7
0
TypeScript基础入门 - 函数 - this(三)

转载 TypeScript基础入门 - 函数 - this(三) 项目实践仓库 https://github.com/durban89/typescript_demo.gittag: 1.2.4 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能...

durban
37分钟前
0
0
Spark core基础

Spark RDD的五大特性 RDD是由一系列的Partition组成的,如果Spark计算的数据是在HDFS上那么partition个数是与block数一致(大多数情况) RDD是有一系列的依赖关系,有利于Spark计算的容错 RDD中每...

张泽立
45分钟前
0
0
如何搭建Keepalived+Nginx+Tomcat高可用负载均衡架构

一.概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已...

Java大蜗牛
59分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部