2012-06-13 222 views
2

我有一個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 

回答

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))