如何使用二进制文件读取和写入值

时间:2012-06-13 19:43:56

标签: python python-3.x

我有一个int类型的变量,我希望将它写入二进制文件中的一个位置:

这样的事情:

with open("file","wb") as f:
    f.seek(position)
    f.write(variable)

但是变量是在这个位置占用4个字节。写作时如何表达?

这就是我的阅读方式:

def read(self, position, length):
    self.file.seek(position)
    a=self.file.read(length)
    data=0
    for i in range(length):
        data=data + (a[i])*pow(256,i)
    return data

1 个答案:

答案 0 :(得分:4)

使用Python struct模块。示例:struct.pack("<I", 3)

该示例将整数值3转换为无符号整数little-endian。

以下是使用原生大小和对齐方式读取和写入本机整数的函数。

import struct

def write_int(f, position, x):
    f.seek(position)
    f.write(struct.pack("i", x))

_int_length = len(struct.pack("i", 0))  # find out size of native integer
def read_int(f, position):
    f.seek(position)
    return struct.unpack("i", f.read(_int_length))