博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python读写二进制文件
阅读量:4088 次
发布时间:2019-05-25

本文共 1165 字,大约阅读时间需要 3 分钟。

使用pickle模块进行二进制文件的读写

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

基本接口

pickle.dump(obj, file, [,protocol])  # 文件写入pickle.load(file)  # 文件读出

protocol:序列化使用的协议版本
0:ASCII协议,所序列化的对象使用可打印的ASCII码表示;
1:老式的二进制协议;
2:2.3版本引入的新二进制协议,较以前的更高效。
(其中协议0和1兼容老版本的python。protocol默认值为0。)
file:对象保存和读取的类文件对象
[
写入] file对象必须有write()接口,可以是一个以‘w’方式打开的文件或者是一个StringIO对象或者其他任何实现write()接口的对象。
[
读出] file对象为类文件对象,有read()和readline()接口。

代码实现

#coding=utf-8# 使用pickle模块读写二进制文件import pickledata = {
'a': [1, 2.0, 3, 4+6j], 'b': ('string', u'Unicode string'), 'c': None }def write(path): output = open(path, 'wb') ''' 写二进制文件需要使用'wb',因为二进制文件会出现'/n'换行符, 实际上是'0X0A',windows平台会自动将其变为两个字符'0X0D',实际文件长度会发生变化。 而'wb'二进制方式会使文件保持一个字符不变的写入。 ''' pickle.dump(data, output) output.close()def read(path): file = open(path, 'rb') # 'rb'与wb'同理 data1 = pickle.load(file) file.close() if data1 == data: return True else: return Falsewhile True: try: write('data.pkl') print(read('data.pkl')) break except: print 'Error'

如需转载与本人联系

此博客

你可能感兴趣的文章
DirectX11 聚光灯
查看>>
DirectX11 HLSL打包(packing)格式和“pad”变量的必要性
查看>>
DirectX11 光照演示示例Demo
查看>>
漫谈一下前端的可视化技术
查看>>
VUe+webpack构建单页router应用(一)
查看>>
Vue+webpack构建单页router应用(二)
查看>>
从头开始讲Node.js——异步与事件驱动
查看>>
Node.js-模块和包
查看>>
Node.js核心模块
查看>>
express的应用
查看>>
NodeJS开发指南——mongoDB、Session
查看>>
Express: Can’t set headers after they are sent.
查看>>
2017年,这一次我们不聊技术
查看>>
实现接口创建线程
查看>>
Java对象序列化与反序列化(1)
查看>>
HTML5的表单验证实例
查看>>
JavaScript入门笔记:全选功能的实现
查看>>
程序设计方法概述:从面相对象到面向功能到面向对象
查看>>
数据库事务
查看>>
JavaScript基础1:JavaScript 错误 - Throw、Try 和 Catch
查看>>