Python 标准库 pickle 提供的 dump() 方法 用于将数据进行序列化并写入文件(dump() 方法的protocol 参数为True 时可以实现压缩的效果),而load() 用于读取二进制文件内容并进行反序列化,还原为原来的信息。

  1 使用 pickle模块写入二进制文件。

 #导入模块
import pickle #准备要序列化的数据
n = 7
i = 13000000
a = 99.056
s = '中国人民 123abc'
lst = [[1,2,3],[4,5,6],[7.8,9]]
tu = (-5,10,8)
coll = {4,5,6}
dic = {'a':'apple','b':'banana','g':'grape','o':'orange'}
aa = 'c' #以写模式打开二进制文件
f = open('sample_pickle.dat','wb')
try:
pickle.dump(n,f) #对象个数
pickle.dump(i,f) #写入整数
pickle.dump(a,f) #写入实数
pickle.dump(s,f) #写入实数
pickle.dump(lst,f) #写入列表
pickle.dump(tu,f) #写入元组
pickle.dump(coll,f) #写入集合
pickle.dump(dic,f) #写入字典
except:
print('写文件异常')
finally:
f.close() #看一下文件内容,已经写入成功。

  2 使用 pickle 模块读取上例写入二进制文件的内容

 #导入模块
import pickle #打开二进制文件
f = open('sample_pickle.dat','rb')
n = pickle.load(f)
print(n) #读取文件中数据个个数 7 for i in range(n): #文件中有多少个对象就循环多个少次
x = pickle.load(f) #依次读取文件中对象
print(x)
f.close() '''
7
13000000
99.056
中国人民 123abc
[[1, 2, 3], [4, 5, 6], [7.8, 9]]
(-5, 10, 8)
{4, 5, 6}
{'a': 'apple', 'b': 'banana', 'g': 'grape', 'o': 'orange'}
'''

  

  小提示:pickle 模块还提供了一个 dumps() 方法,可以返回对象序列化之后的字节形式,例如:

 >>> import pickle
>>> pickle.dumps([1,2,3])
b'\x80\x03]q\x00(K\x01K\x02K\x03e.'
>>>
>>> pickle.dumps([1,2,3,4])
b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04e.'
>>>
>>> pickle.dumps({1,2,3,4})
b'\x80\x03cbuiltins\nset\nq\x00]q\x01(K\x01K\x02K\x03K\x04e\x85q\x02Rq\x03.'
>>>
b'\x80\x03K\x01K\x02K\x03\x87q\x00.'
>>>
>>> pickle.dumps(123)
b'\x80\x03K{.'
>>>

  拓展阅读:下面的代码可以用来把文本文件转换为二进制文件,其中,infomation.txt是包含若干文本信息的源文件,infomation_pickle.dat是转换后的二进制文件。

 #导入模块
import pickle with open('infomation.txt','r',encoding='utf-8') as src,open('infomation_pickle.dat','wb') as dest:
lines = src.readlines() #把源文件中的所有内容都读取到 lines 列表中
pickle.dump(len(lines),dest) #先写入对象个数
for line in lines:
pickle.dump(line,dest) #上面就是已经把数据写入到二进制文件中了,下面从二进制文件中反序列化对象
with open('infomation_pickle.dat','rb') as f:
n = pickle.load(f)
for i in range(n):
print(pickle.load(f))

6.3.1 使用 pickle 模块读写二进制文件的更多相关文章

  1. 6.3.2 使用struct模块读写二进制文件

    使用 struct 模块需要使用 pack() 方法吧对象按指定个数进行序列化,然后使用文件对象的write方法将序列化的结果写入二进制文件:读取时需要使用文件对象的read()方法读取二进制文件内容 ...

  2. python 列表 字典 读写文件:pickle模块的基本使用

    python数据持久存储:pickle模块的基本使用(转载) 作者: pzxbc 出处: http://pzxbc.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保 ...

  3. python-时间模块,random、os、sys、shutil、json和pickle模块

    一.time与datetime模块 time模块: 时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回类型为float类型 格式化时间字符串(Format String) ...

  4. Python3 pickle模块用法

    pickle(python3.x)和cPickle(python2.x的模块)相当于java的序列化和反序列化操作. 常采用下面的方式使用: import pickle pickle.dump(obj ...

  5. Pickle模块数据对象持久化操作

    Pickle模块的作用是持久化(序列化)的储存数据.因此我先解释下:什么是序列化与反序列化.什么是对象序列化和对象反序列化.通俗地讲,它们的定义如下:序列化: 把一个对象保存到一个文件或数据库字段中去 ...

  6. Python_pickle模块操作二进制文件

    import pickle b=7 i=13000000 fa=99.056 s='中国人民 123abc' lst=[[1,2,3],[4,5,6],[7,8,9]] tu=(-5,10,8) co ...

  7. Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式

    Python第十四天 序列化  pickle模块  cPickle模块  JSON模块  API的两种格式 目录 Pycharm使用技巧(转载) Python第一天  安装  shell  文件 Py ...

  8. Python Json & Pickle模块

    用于序列化的两个模块 Json,用于字符串 和 python数据类型间进行转换 Pickle,用于python特有的类型 和 python的数据类型间进行转换 Json模块提供了四个功能:dumps. ...

  9. 4、Python文件对象及os、os.path和pickle模块(0530)

    文件系统和文件 1.文件系统是OS用于明确磁盘或分区上的文件的方法和数据结构---即在磁盘上组织文件的方法: 文件系统模块:os 2.计算机文件(称文件.电脑档案.档案),是存储在某种长期储存设备或临 ...

随机推荐

  1. SPOJ - QMAX3VN (4350) splay

    SPOJ - QMAX3VN 一个动态的序列 ,在线询问某个区间的最大值.关于静态序列的区间最值问题,用ST表解决,参考POJ 3264 乍一看上去 splay可以轻松解决.书上说可以用块状链表解决, ...

  2. Spark 操作Hive 流程

    1.ubuntu 装mysql 2.进入mysql: 3.mysql>create database hive (这个将来是存 你在Hive中建的数据库以及表的信息的(也就是元数据))mysql ...

  3. VPS主机

    腾讯云企业认证 备案域名要是顶级域名格式,所以不能是www.blueheartzf.com,而要是blueheartzf.com

  4. [Swift通天遁地]四、网络和线程-(9)上传图片并实时显示上传进度

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  5. 微信小程序压缩图片并上传到服务器(拿去即用)

    这里注意一下,图片压缩后的宽度是画布宽度的一半 canvasToTempFilePath 创建画布的时候会有一定的时间延迟容易失败,这里加setTimeout来缓冲一下 这是单张图片压缩,多张的压缩暂 ...

  6. JavaScript Date 日期操作

    在前端工程师的道路上,可能有时候需要与时间来打交道,下面我们来看一下日常对日期的操作,今天我们介绍的是Day.js插件 Day.js 是一个轻量的处理时间和日期的 JavaScript 库,和 Mom ...

  7. flask中的蓝图(BluePrint)

    蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...

  8. day02_12/12/2016_bean的实例化之静态工厂方式

  9. UE4 集成讯飞听写插件

    搞了几天,有些坑记录一下. 3个方面的知识需要学习 1.制作UE4插件 2.引入第三方库 3.讯飞听写的api 一看是参考 https://blog.csdn.net/u012793104/artic ...

  10. 个人作业——Alpha项目测试

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/ 这个作业要求在哪里 https://edu.cnbl ...