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

用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.示例为一次性按同一种格式读出所有内容,如果有不同格式,需要自己设计