Es soll eine Textdatei eingelesen werden, welche Namen und Alter enthält und aus diesen Daten eine Liste pro Person macht (Vorname, Nachname, Alter). In der Textdatei sind jedoch die Daten teils durch ";" oder anderen Zeichen getrennt, welche zu IndexError führen würden.
Es kann auch sein, dass das Alter so gegeben ist, dass sich dies nicht zu einem Integer ändern lässt (ValueError).
Auch kann es sein, dass es die Datei einfach nicht gibt (IOError).
Der Code sieht wie folgt aus:
Code: Alles auswählen
def Read_Personen_check(filename):
Personen = []
try:
infile = open(filename, 'r')
for line in infile:
liste = line.split(',')
Vorname = liste[0].strip()
Nachname = liste[1].strip()
Alter = int(liste[2])
Personen.append([Vorname, Nachname, Alter])
infile.close()
return Personen
except IOError:
print "Kein File gefunden!"
return Personen
except IndexError:
return "Index out of Range!"
return Personen
except ValueError:
return "Konversion zu int nicht möglich!"
return Personen
else:
pass
filename1 = "does_not_exist.txt"
l = Read_Personen_check(filename1)
print l
filename2 = "Personen_fehlerhaft.txt"
l = Read_Personen_check(filename2)
print l
Mein Problem ist, dass ich den else Block nicht richtig codieren kann. Ich möchte, dass bei einem Fehler trotzdem weitergearbeitet wird und die Liste mit den möglichen Daten auffüllt.
Es sollte wie folgt aussehen:
Kein File gefunden!
[]
Index out of range!
Konversion zu int nicht moeglich!
Index out of range!
[['Simon', 'Juljanovic', 17], ['Julia', 'Gernot', 15], ['Sarah', 'Mueller', 13], ['Mark', 'Schmitt', 19]]
Bei mir kommt folgendes:
Kein File gefunden!
[]
Index out of range!
Kann mir BITTE jemand helfen?
LG