Dies ist eine alte Version des Dokuments!
Alle Züge sind in einer Textdatei gespeichert, die wie folgt aufgebaut ist:
150, 0, 060, 340,-1, 01008, 0, 0.14, 0.3, 0.1 200, 0, 120, 340,-1, 00119, 0, 0.14, 0.3, 0.1 40, 5, 400, 340,-1, 04321, 0, 0.14, 0.2, 0.1 x
Eine Zeile steht für einen Zug, dessen Eigenschaften in folgender Codierung aufgelistet sind (durch Kommata getrennt):
Diese Datei wird zeilenweise Ausgelesen und jede Zeile einem Listenelement zugewiesen, welches aus einer Zeile ein Wörterbuch macht, das dann ausgelesen werden kann:
def reader(datei): text = open(datei, "r") # Datei wird geoeffnet ausgabe = [] while 1==1: #Endlosschleife zum Abarbeiten der Date zeile = text.readline() # Datei wird nun Zeile fuer Zeile eingelesen zeile = zeile.strip('\n') # Ein Zeilenumbruchzeichen am Ende wird entfernt if zeile[0] == "x": break else: zug=list(zeile.split(',')) # Die Zeile wird in eine Liste transformiert zug=[z.strip() for z in zug] #Diese List wird nun in ein Woerterbuch eingelesen: wbzug = {"vavg" : int(zug[0]), "vist" : int(zug[1]), "besetzung" : int(zug[2]), "ankunftplan" : int(zug[3]), "ankunft" : int(zug[4]), "nummer" : int(zug[5]), "ort" : int(zug[6]), "auf1" : float(zug[7]), "auf2" : float(zug[8]), "auf3" : float(zug[9])} ausgabe.append(wbzug) # Die Woerterbuecher werden als "Anfangsreihenfolge" aufgelistet text.close() return ausgabe # Diese Liste wird zurueckgeliefert, die Datei ist eingelesen.
Eine eingelesene Zugliste, wie sie den Simulations- und Auswertungsprogrammen übergeben wird, sieht dann wie folgt aus (sehr klobig). Die Einzelnen Züge sind in Wörterbüchern, die wiederum sind in einer Liste geordnet (die „Reihenfolge“).
Hier die eingelesene Liste aus dem Beispiel oben:
[{'ankunft': -1, 'nummer': 1008, 'besetzung': 60, 'vist': 0, 'auf1': 0.14, 'ort': 0, 'auf3': 0.1, 'auf2': 0.3, 'ankunftplan': 340, 'vavg': 150}, {'ankunft': -1, 'nummer': 119, 'besetzung': 120, 'vist': 0, 'auf1': 0.14, 'ort': 0, 'auf3': 0.1, 'auf2': 0.3, 'ankunftplan': 340, 'vavg': 200}, {'ankunft': -1, 'nummer': 4321, 'besetzung': 400, 'vist': 5, 'auf1': 0.14, 'ort': 0, 'auf3': 0.1, 'auf2': 0.2, 'ankunftplan': 340, 'vavg': 40}]