seltsames Problem
Verfasst: Samstag 6. November 2004, 15:47
Code: Alles auswählen
def load():
f = open('data.dat','r')
objects = 0
frames = 0
global timestep
timestep = 0
i = 0
x,y,z,Vx,Vy,Vz,mass = 0,0,0,0,0,0,0
for line in f:
if line[0] != '#':
if line[:3] == "obj":
objects = int(line[8:-1])
if line[:3] == "fra":
frames = int(line[7:-1])
if line[:3] == "tim":
timestep = int(line[9:-1])
if objects != 0 and frames != 0 and timestep != 0:
data = array(type= 'Float32', shape=(frames,objects,7))
#if line[:3] == "nam":
if line[:3] == "pos":
x,y,z = map(float, line[4:].split(','))
if line[:3] == "vel":
Vx,Vy,Vz = map(float, line[4:].split(','))
if line[:3] == "mas":
mass = float(line[5:-1])
data[0][i] = [x,y,z,Vx,Vy,Vz,mass]
print data[0][0]
print data[0][1]
if i == (objects - 1):
break
i += 1
f.close()
Code: Alles auswählen
#Input Datei
objects 2
frames 10000
timestep 1000
#Objektdaten
name "Erde"
pos 0,0,0
vel 0,0,300.0
mass 5.977e24
name "Mond"
pos 3.84405e8,0,0
vel 0,1.03e3,300.0
mass 7.348e22
Code: Alles auswählen
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 0.00000000e+00
0.00000000e+00 3.00000000e+02 5.97699988e+24]
[ 0. 0. 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0. 0. 0.]
[ 3.84404992e+08 0.00000000e+00 0.00000000e+00 0.00000000e+00
1.03000000e+03 3.00000000e+02 7.34800019e+22]
Aber in der zweiten hälfte wirds echt sehr seltsam: Die erste Zeile ist aus unerfindlichen Gründen wieder leer und die zweite ist dem input entsprechend ausgefüllt. Woher kommt das? Ich hab jetzt ne geschlagene Stunde rum probiert und seh einfach den Fehler nicht. Falls mir einer sagen könnte, was ich falsch gemacht hab, wäre ich extrem dankbar.
Oder gibt es eine bessere und einfachere Möglichkeit Daten einzulesen als ein plaintext Datei zu parsen?
-- Sonium