Ich versuche, die erste Zeile aus einer Datei zu lesen, die zu einem bestimmten Format ich angegeben entspricht.Python: gelesen, bis die erste richtig formatierte Zeile, fangen, wenn es keine gibt
Ich habe eine Methode self.parse_log_line(line)
, die ein Objekt zurückgibt, wenn die Datei ordnungsgemäß analysiert wurde, andernfalls gibt None
zurück.
Also habe ich versucht, jede Zeile nur zu lesen und analysieren, bis ich etwas nicht-None erhalten:
with open(filename, 'r') as csv_file:
line = csv_file.readline()
info = self.parse_log_line(line) #parse it, None if the line isn't formatted properly
while info is None:
line = csv_file.readline()
info = self.parse_log_line(line)
# if info is still none, do something to handle that
jedoch aus irgendeinem Grund dieser Schleifen infinitly. Einige Dateien können leer sein oder keine korrekt formatierten Zeilen enthalten.
Wie kann ich das beheben? Gelesen, bis ich eine richtig formatierte Linie bekomme, und wenn es keine gibt, etwas anderes tun?
Warum durchlaufen Sie nicht einfach Ihre Datei, bis Sie gefunden haben, was Sie suchen. Sobald Sie die Datei erschöpft haben und es keine gibt, fahren Sie mit dieser Bedingung fort? Die Verwendung einer while-Schleife auf diese Weise ist ziemlich gefährlich, gerade weil es in einer Endlosschleife weiterlaufen wird, wie Sie gerade erleben. – idjaw
Hmm, ja, warum nicht ich? Ich versuche es jetzt: D –
Ok, Idjaw, das funktioniert. Ich benutze jetzt 'für Zeile in csv_file:' und führe das Parsing dort durch. Dann einfach "brechen", sobald ich die erste richtige Linie gefunden habe. Wenn Sie das als Antwort hinzufügen, kann ich es akzeptieren;) –