用python读写二进制文件

二进制文件的好处是没有文件格式,读写直接是数据,不用对格式进行编解码(相比有固定格式的文件)

用python读写二进制文件用到的python库是struct。

在写入文件时,需要对需要写入的数据进行打包,打包的本质是规定了写入的数据按几位写入,比如'a',ascii为0x61, 如果规定写入8位,则写入的数据为:0110 0001, 而如果规定写入16位,则写入的数据为:0000 0000 0110 0001,在按不同的规则读数据时,读出来的数据是不一样的。

在读入文件时,需要对读取的二进制文件进行解包,拆包的本质是规定了按多少位读取一个数据,比如0000 0000 0110 0001,按8位读取一个数据,则为:0x0, 0x61。 按16位读取一个数据,则为:0x61。

写示例:

import struct

fw = open("file_name.bin", "wb")
for i in file_content:
    s = struct.pack('B', i)
    fw.write(s)
fw.close()

要点:

1.要以二进制写形式打开/创建文件

2.struct.pack第一个参数为数据格式,具体什么格式参考文章末尾连接,示例中'B'是按8位数据写入;第二个参数为需要写入的数据

读示例:

import struct 

def read_bin(file_name):
    """
    function: read a bin file, return the tuple of the content in file
    """
    with open(file_name, "rb") as f:
        f_content = f.read()
        content = struct.unpack("B" * len(f_content), f_content)
        f.close()
    return content

要点:

1.同写文件示例,unpack的第一个参数(解包格式)参考下方链接

2.示例为一次性按同一种格式读出所有内容,如果有不同格式,需要自己设计

拆打包格式可参考:Python之struct模块 - 酌三巡 - 博客园

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值