als Physiker finde ich Python sehr praktisch, wenn ich einfach loslege sieht das Ergebnis aber irgendwie nie wirklich elegant aus. Hier sind wieder einmal 30 Zeilen Code, die ich nicht besser hinbekommen habe. Das ganze konvertiert binäre Messdaten in eine leserliche ASCII-Form.
Code: Alles auswählen
# quick converter for raw-measurement files
# file format:
#
# 256 bytes header
# 56 bytes entry: 7 IEEE doubles (64 bit)
# 56 bytes entry: 7 IEEE doubles (64 bit)
# ...
import glob
from struct import unpack
from numpy import array, savetxt
def convertEntry(buffer, listArray):
struct = '7d'
row = unpack(struct, buffer)
for i, item in enumerate(row):
listArray[i].append(item)
# look for raw files
filenames = glob.glob('*.raw')
for name in filenames:
# initialize
listArray = [ [], [], [], [], [], [], [] ]
f = open(name, 'rb')
# seek to first entry
f.seek(256)
# read data and parse it
structLength = 56
while True:
buffer = f.read(structLength)
if buffer == '':
break
convertEntry(buffer, listArray)
f.close()
time = listArray[0]
voltage = listArray[1]
current = listArray[2]
amplitude = listArray[3]
delay = listArray[4]
resistance = listArray[5]
table = array([time, voltage, current, amplitude, delay, resistance]).transpose()
savetxt((name +'.dat'), table, fmt='%.7e', delimiter='\t' )
Viele Grüße
vario