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

对于二进制文件,不能使用记事本或其他文本编辑软件进行正常读写,也无法通过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)

----------我是分割线----------

相关阅读:

Python+shelve读写二进制文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dongfuguo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值