Hoe één bestand regel voor regel naar een lijst in Python te lezen

  1. readlines om het bestand regel voor regel in Python te lezen
  2. Herhaal de bestandsmethode om een ​​bestand regel voor regel in Python te lezen
  3. file.read methode om het bestand regel voor regel in Python te lezen
  4. Vergelijking van verschillende methoden voor het regel voor regel lezen van een bestand in Python

Stel dat we een bestand hebben met de onderstaande inhoud,

Zinken regenpijp
Zinken regenpijp
Line One: 1
Line Two: 2
Line Three: 3
Line Four: 4
Line Five: 5

We moeten de inhoud van het bestand regel voor regel om een lijst te lezen ["Line One: 1", "Line Two: 2", "Line Three: 3", "Line Four: 4", "Line Five: 5"].

We zullen verschillende methoden introduceren om een ​​bestand regel voor regel in een onderstaande lijst te lezen.

readlines om het bestand regel voor regel in Python te lezen

readlines geeft een lijst met regels uit de stream terug.

>>> 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']

Het eindkarakter \n wordt ook opgenomen in de tekenreeks en kan worden verwijderd met str.rstrip('\n')

>>> 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']

Herhaal de bestandsmethode om een ​​bestand regel voor regel in Python te lezen

We kunnen het bestand herhalen om het regel voor regel te lezen in plaats van te gebruiken readlines.

>>> 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']

Deze methode is veel beter dan de bovenstaande methode vanuit het perspectief van geheugengebruik. readlines methode bevat alle regels van het bestand in het geheugen, maar de interatiemethode neemt slechts één regel van de bestandsinhoud naar het geheugen en verwerkt deze. Het heeft de voorkeur als de bestandsgrootte super groot is om te vermijden MemoryError.

file.read methode om het bestand regel voor regel in Python te lezen

file.read(size=-1, /) leest van het bestand tot EOF als size niet is ingesteld. We kunnen de lijnen ervan splitsen door de str.splitlines functie te gebruiken.

>>> with open(filePath, 'r') as f:
    f.read().splitlines()

    
['Line One: 1', 'Line Two: 2', 'Line Three: 3', 'Line Four: 4', 'Line Five: 5']

Het resultaat bevat niet het laatste teken \n in de standaardmethode str.splitlines . Maar je kan opnemen \n als de keepends parameter is ingesteld op True.

>>> 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']

Vergelijking van verschillende methoden voor het regel voor regel lezen van een bestand in Python

We zullen de efficiëntieprestaties vergelijken tussen de verschillende methoden die in dit artikel worden geïntroduceerd. We verhogen het aantal regels in het geteste bestand om 8000 het prestatieverschil gemakkelijk te vergelijken.

>>> 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

readlines() methode is iets beter dan de bestandsiteringsmethode en file.read().splitlines() is de meest efficiënte methode met een marge van meer dan 25% in vergelijking met de andere twee methoden.

Maar als in de BigData toepassing waar geheugen de beperkende factor is, is de methode voor het itereren van bestanden de beste zoals hierboven uitgelegd.

Gerelateerde Artikelen - Python String

  • Hoe controleer je of een string leeg is op een pythonische manier
  • Hoe witruimte in een string te verwijderen
  • Hoe tekenreeks naar datetime te converteren
  • Hoe tekenreeks naar kleine letters te converteren in Python 2 en 3