Ich habe eine große Binärdatei, die ich in einem Array lesen möchte. Das Format der binären Dateien ist:Geschwindigkeit beim Lesen einer Binärdatei verbessern
- gibt es ein extra Daten von 4 Bytes am Anfang und am Ende jeder Zeile, die ich nicht verwenden;
- zwischen I 8 Bytes haben Werte
ich es so mache:
# nlines - number of row in the binary file
# ncols - number of values to read from a row
fidbin=open('toto.mda' ,'rb'); #open this file
temp = fidbin.read(4) #skip the first 4 bytes
nvalues = nlines * ncols # Total number of values
array=np.zeros(nvalues,dtype=np.float)
#read ncols values per line and skip the useless data at the end
for c in range(int(nlines)): #read the nlines of the *.mda file
matrix = np.fromfile(fidbin, np.float64,count=int(ncols)) #read all the values from one row
Indice_start = c*ncols
array[Indice_start:Indice_start+ncols]=matrix
fidbin.seek(fidbin.tell() + 8) #fid.tell() the actual read position + skip bytes (4 at the end of the line + 4 at the beginning of the second line)
fidbin.close()
Es funktioniert gut, aber das Problem ist, dass für großen Binärdatei sehr langsam ist. Gibt es eine Möglichkeit, die Lesegeschwindigkeit der Binärdatei zu erhöhen?
Welche Python-Version verwenden Sie? – niemmi