Sie können die gesamte Datei lesen und die Zeilen mit str.splitlines
:
temp = file.read().splitlines()
Oder Sie können den Zeilenumbruch von Hand entfernen:
temp = [line[:-1] for line in file]
Anmerkung: diese letzte Lösung funktioniert nur, wenn die Datei mit einem Zeilenumbruch endet, da sonst die letzte Zeile ein Zeichen verliert.
Diese Annahme trifft in den meisten Fällen zu (insbesondere bei Dateien, die mit Texteditoren erstellt wurden, die oft tun trotzdem einen abschließenden Zeilenumbruch hinzufügen).
Wenn Sie dies vermeiden wollen, können Sie am Ende der Datei einen Zeilenumbruch einfügen:
with open(the_file, 'r+') as f:
f.seek(-1, 2) # go at the end of the file
if f.read(1) != '\n':
# add missing newline if not already present
f.write('\n')
f.flush()
f.seek(0)
lines = [line[:-1] for line in f]
Oder eine einfachere Alternative ist strip
stattdessen den Zeilenumbruch:
[line.rstrip('\n') for line in file]
Oder sogar, obwohl ziemlich unleserlich:
[line[:-(line[-1] == '\n') or len(line)+1] for line in file]
Dabei wird die Tatsache ausgenutzt, dass der Rückgabewert von or
ist kein boolescher Wert, sondern das Objekt, das als wahr oder falsch bewertet wurde.
T readlines
Methode ist eigentlich gleichbedeutend mit:
def readlines(self):
lines = []
for line in iter(self.readline, ''):
lines.append(line)
return lines
# or equivalently
def readlines(self):
lines = []
while True:
line = self.readline()
if not line:
break
lines.append(line)
return lines
Desde readline()
behält auch den Zeilenumbruch bei readlines()
behält sie.
Anmerkung: für die Symmetrie zu readlines()
el writelines()
Methode tut no endende Zeilenumbrüche hinzufügen, also f2.writelines(f.readlines())
erzeugt eine exakte Kopie von f
en f2
.