ich habe heute begonnen mit Python zu arbeiten und bin dabei eine zuvor in IDL geschriebene Routine in Python zu schreiben. Der Grund für den Wechsel von IDL zu Python liegt darin, dass IDL die HDF5 Family Split Option nicht beherrscht.
Bevor ich mit Python zu HDF5 Dateien wechsel, möchte ich erstmal alte Binaries einlesen, um die Routine mit meinen alten IDL Routinen vergleichen zu können.
Die Binaries haben einen Header, der die Anzahl (data_length) der Datenpunkte innerhalb eines Datenblocks angibt. Insgesamt gibt es N (num_buff) solcher Blöcke. Im Code habe ich die Anzahl der Blöcke über die Gesamtgröße des Binary files bestimmt. Unter Berücksichtigung, dass Jede Zahl 2byte hat.
Hier der Code soweit:
Code: Alles auswählen
import struct, os
with open('lines/500/digital352_0.bin', 'rb') as f:
f.seek(0)
len=os.path.getsize('lines/500/digital352_0.bin')
bytes=f.read(8)
header_byte=struct.unpack('II',bytes)
data_length=int(header_byte[0])
file_size=int(len)
num_buff=file_size/2/(data_length+2)
print('Total file size in bytes:' +str(file_size) + 'bytes')
print('Number of data points per frame:' + str(data_length))
print('Number of frames per file:' + str(num_buff))
for i in range(num_buff-1):
fifo_start=i*(data_length+4)+4
k=fifo_start+data_length
for line in f:
print line[fifo_start]
f.close()
Ich hoffe, ich konnte mein Problem verdeutlichen.
Vielen lieben Dank!