前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python+pickle读写二进制文件小案例

Python+pickle读写二进制文件小案例

作者头像
Python小屋屋主
发布2018-04-16 15:30:25
1.8K0
发布2018-04-16 15:30:25
举报
文章被收录于专栏:Python小屋Python小屋

对于二进制文件,不能使用记事本或其他文本编辑软件进行正常读写,也无法通过Python的文件对象直接读取和理解二进制文件的内容。必须正确理解二进制文件结构和序列化规则,才能准确地理解二进制文件内容并且设计正确的反序列化规则。

所谓序列化,简单地说就是把内存中的数据在不丢失其类型信息的情况下转成对象的二进制形式的过程,对象序列化后的形式经过正确的反序列化过程应该能够准确无误地恢复为原来的对象

Python中常用的序列化模块有struct、pickle、marshal和shelve,本文主要介绍pickle模块的用法。

import pickle

# 要序列化的数据 i = 13000000 a = 99.056 s = '中国人民123abc' lst = [[1, 2, 3], [4, 5, 6]] tu = (-5, 10, 8) coll = {4, 5, 6} dic = {'a':'apple', 'b':'banana'}

# 把要序列化的数据放入一个列表 data = [i, a, s, lst, tu, coll, dic]

# 创建二进制文件并写入序列化后的数据 with open('sample_pickle.dat', 'wb') as f: try: # 后面将要写入的数据个数 pickle.dump(len(data), f) for item in data: pickle.dump(item, f) except: # 如果写文件异常则跳到此处执行 print('写文件异常!')

with open('sample_pickle.dat', 'rb') as f: # 首先读取数据个数 n = pickle.load(f) # 依次读取并反序列化数据 for i in range(n): x = pickle.load(f) print(x)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档