Wie man eine Datei Zeile für Zeile in eine Liste in Python einliest
-
readlines
um die Datei Zeile für Zeile in Python zu lesen - Iterieren Sie über die Datei-Methode, um eine Datei Zeile für Zeile in Python zu lesen
-
file.read
Methode, um die Datei Zeile für Zeile in Python zu lesen - Vergleich verschiedener Methoden beim Lesen einer Datei Zeile für Zeile in Python
Angenommen, wir haben eine Datei mit dem untenstehenden Inhalt,
Line One: 1
Line Two: 2
Line Three: 3
Line Four: 4
Line Five: 5
Wir müssen den Dateiinhalt Zeile für Zeile in eine Liste einlesen, ["Line One: 1", "Line Two: 2", "Line Three: 3", "Line Four: 4", "Line Five: 5"]
.
Im Folgenden werden wir verschiedene Methoden vorstellen, um eine Datei Zeile für Zeile in eine Liste einzulesen.
readlines
um die Datei Zeile für Zeile in Python zu lesen
readlines
gibt eine Liste von Zeilen aus dem Stream zurück.
>>> filePath = r"/your/file/path"
>>> with open(filePath, 'r', encoding='utf-8') as f:
f.readlines()
['Line One: 1\n', 'Line Two: 2\n', 'Line Three: 3\n', 'Line Four: 4\n', 'Line Five: 5']
Das Endzeichen \n
ist ebenfalls in der Zeichenkette enthalten und könnte mit str.rstrip('\n')
entfernt werden.
>>> with open(filePath, 'r', encoding='utf-8') as f:
[_.rstrip('\n') for _ in f.readlines()]
['Line One: 1', 'Line Two: 2', 'Line Three: 3', 'Line Four: 4', 'Line Five: 5']
Iterieren Sie über die Datei-Methode, um eine Datei Zeile für Zeile in Python zu lesen
Wir könnten über die Datei iterieren, um sie Zeile für Zeile zu lesen, anstatt readlines
zu benutzen.
>>> with open(filePath, 'r', encoding='utf-8') as f:
[_.rstrip('\n') for _ in f]
['Line One: 1', 'Line Two: 2', 'Line Three: 3', 'Line Four: 4', 'Line Five: 5']
Diese Methode ist viel besser als die obige Methode aus der Perspektive des Speicherverbrauchs. Die readlines
Methode hält alle Zeilen der Datei im Speicher, aber die Interationsmethode nimmt nur eine Zeile des Dateiinhalts mit in den Speicher und verarbeitet sie. Sie wird bevorzugt, wenn die Dateigröße super groß ist, um MemoryError
zu vermeiden.
file.read
Methode, um die Datei Zeile für Zeile in Python zu lesen
file.read(size=-1, /)
liest aus der Datei bis EOF, wenn size
nicht gesetzt ist. Wir könnten die Zeilen davon mit der Funktion str.splitlines
trennen.
>>> with open(filePath, 'r') as f:
f.read().splitlines()
['Line One: 1', 'Line Two: 2', 'Line Three: 3', 'Line Four: 4', 'Line Five: 5']
Das Ergebnis enthält nicht das Endzeichen \n
in der Standardmethode str.splitlines
. Aber Sie könnten \n
einschließen, wenn der keepends
Parameter auf True
gesetzt ist.
>>> with open(filePath, 'r') as f:
f.read().splitlines(keepends=True)
['Line One: 1\n', 'Line Two: 2\n', 'Line Three: 3\n', 'Line Four: 4\n', 'Line Five: 5']
Vergleich verschiedener Methoden beim Lesen einer Datei Zeile für Zeile in Python
Wir werden die Effizienzleistung zwischen verschiedenen Methoden vergleichen, die in diesem Artikel vorgestellt werden. Wir erhöhen die Anzahl der Zeilen in der getesteten Datei auf 8000
, um den Leistungsunterschied leicht vergleichen zu können.
>>> timeit.timeit('''with open(filePath, 'r', encoding='utf-8') as f:
f.readlines()''',
setup='filePath=r"C:\Test\Test.txt"',
number = 10000)
16.36330720000001
>>> timeit.timeit('''with open(filePath, 'r', encoding='utf-8') as f:
[_ for _ in f]''',
setup='filePath=r"C:\Test\Test.txt"',
number = 10000)
18.37279060000003
>>> timeit.timeit('''with open(filePath, 'r', encoding='utf-8') as f:
f.read().splitlines()''',
setup='filePath=r"C:\Test\Test.txt"',
number = 10000)
12.122660100000019
Die readlines()
Methode ist etwas besser als die Datei-Iterationsmethode, und file.read().splitlines()
ist die effizienteste Methode mit einer Marge von mehr als 25% im Vergleich zu den beiden anderen Methoden.
Aber, wenn in der BigData
Anwendung, wo der Speicher der Constrainer ist, ist die Datei-Iterationsmethode die beste, wie oben erklärt.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn FacebookVerwandter Artikel - Python String
- Entfernen Kommas aus String in Python
- Wie man prüft, ob eine Zeichenkette auf pythonische Weise leer ist
- Konvertieren einer Zeichenkette in einen Variablennamen in Python
- Wie man Leerzeichen in einem String in Python entfernt
- Wie man in Python Zahlen aus einer Zeichenkette extrahiert
- Wie man in Python String in datetime konvertiert