ich hatte zwar mal einen Kurs in den Grundlagen von Python, damals Version 2.7, bin aber dennoch Anfänger. Nun nutze ich Python 3.7 mittels Spyder (Anaconda) für einen aktuellen Simulations-Kurs von Evakuierungen an der Uni. Das Programm erzeugt für jede Tür eine Datei mit drei "Header"-Zeilen, einer leeren Zeile und dann jeweils die Zeit und kumulierte Personenanzahl (mit zwei Leerzeichen dazwischen) und anschließend zwei leere Zeilen.

Mein Ziel ist es einen Graphen zu erzeugen (x= Personenanzahl, y=Zeit). Dazu nutze ich matplotlib.pyplot und muss dafür je eine Liste für die x und y Koordinate erzeugen.
Mein Ansatz ist der folgende:
Code: Alles auswählen
#Dateien
f1 = open('a2_1_traj.txt_flow_exit_id_2.dat' , 'r')
f2 = open('a2_2_traj.txt_flow_exit_id_2.dat' , 'r')
time1 = []
time2 = []
ped = []
# um Header nicht zu beachten
cnt1 = 0
cnt2 = 0
# Schleifen
for line in f1:
cnt1 += 1
if cnt1 > 4: # Anpassen, Zeilen "Header"
line = line.rstrip('\n')
# line = line.rstrip('\r')
line = line.split(' ')
time1.append(float(line[0]))
ped.append(int(line[1]))
for line in f2:
cnt2 += 1
if cnt2 > 4: # Anpassen, Zeilen "Header"
line = line.rstrip('\n')
# line = line.rstrip('\r')
line = line.split(' ')
time2.append(float(line[0]))
Ich habe versucht das Problem zu lösen:
Code: Alles auswählen
for line in f1:
cnt1 += 1
if cnt1 > 4:
if f1.readline(1) != ' ':
line = line.rstrip('\n')
line = line.rstrip('\r')
line = line.split(' ')
time1.append(float(l[0]))
ped.append(int(l[1]))
else:
break
Desweiteren beruht meine Methode darauf, dass ich für jede auszuwertende Datei händisch cntX=0 und die Liste für timeX (teilweise auch pedX) erstellen, sowie die Schleife kopiere und deren Inhalt auf die Datei und Liste(n) etc. anpasse. X steht für 1,2,3... abhängig von der Anzahl der Dateien. Ich habe versucht das mit einer Schleife mit range zu lösen:
Code: Alles auswählen
for i in range(1,3):
for line in fi:
cnti += 1
if cnti >4:
line = line.rstrip('\n')
# line = line.rstrip('\r')
line = line.split(' ')
timei.append(float(line[0]))
ped.append(int(line[1]))
Ich bin leider zu keinem der Probleme fündig geworden. Wie gesagt, ich kann grundsätzlich mit meinem Code mein Ziel erreichen, wenn auch durch händische Anpassungen. Daher denke ich, dass dieser stark optimiert werden kann und ich würde gerne verstehen wie und wo meine Denkfehler bei dem leeren Zeilen und meinem Lösungsansatz sind, um zu lernen. Daher bin ich für jede Hilfe, Denkanstöße, alternative Ansätze etc. sehr dankbar.
Liebe Grüße
Morgoth_der_Beginner