Erstens, wie @ l33tnerd sagte, sollte f.close
außerhalb der for-Schleife liegen.
Zweitens rufen Sie nur readline
vor der Schleife auf. Das liest nur die erste Zeile. Der Trick besteht darin, dass Dateien in Python als Iteratoren fungieren, so dass Sie über die Datei iterieren können, ohne Methoden aufrufen zu müssen. Dadurch erhalten Sie eine Zeile pro Iteration:
Schließlich haben Sie sich auf die Variable lines
innerhalb der Schleife bezogen; Ich nehme an, Sie wollten sich auf line
beziehen.
Bearbeiten: Oh, und Sie müssen den Inhalt der if
-Anweisung einrücken.
Sie möchten wahrscheinlich etwas wie:
%Vor%Schließen Sie nicht jede Iteration der Schleife und Druckzeile statt Zeilen. Benutze auch readlines, um alle Zeilen zu erhalten.
BEARBEITEN hat meine andere Antwort entfernt - die andere in dieser Diskussion ist eine bessere Alternative als das, was ich hatte, also gibt es keinen Grund, sie zu kopieren.
Auch das \ n mit read () abgestreift. splitlines ()
Du könntest das versuchen. Es liest nicht alles von f gleichzeitig in den Speicher (mit dem Iterator des Dateiobjekts) und schließt die Datei, wenn der Code den with-Block verlässt.
%Vor%Wenn Sie eine ältere Version von Python (vor 2.6) verwenden, müssen Sie
haben %Vor%Hast du es versucht
? %Vor%?
%Vor%liest nur "eine Zeile", andererseits
%Vor%liest ganze Zeilen und gibt Ihnen eine Liste aller Zeilen.