Utilizați readline pentru a citi un fișier txt python3 (Programare, Python, Python 3.X, Readline)

Cod971 a intrebat.

Lucrez la asta de ore întregi și nu reușesc să o fac bine, orice ajutor ar fi apreciat! Întrebarea mea este cum pot folosi funcția .readline() pentru a citi până la sfârșitul unui fișier text? Știu că .readlines() funcționează la fel de bine, dar încerc să procesez o linie la un moment dat.

Iată ce am pentru codul meu de până acum:

    a = open("SampleTxt.txt","r")

    While True:

        a.readline()

Problema mea este că obțin o buclă infinită atunci când execut acest lucru, nu ar fi trebuit să se oprească odată ce nu a mai putut citi o linie?

1 răspunsuri
Jon Clements

a.readline() se va întoarce '' un șir gol atunci când nu mai sunt disponibile date, trebuie să verificați acest lucru și apoi să întrerupeți while, , de exemplu:

while True:
    line = a.readline()
    if not line: 
        break

Dacă nu este pur și simplu pentru scopuri de învățare, atunci chiar ar trebui să utilizați un with și o buclă for-loop pentru a procesa fișierul, linie cu linie:

with open('SampleTxt.txt') as fin:
    for line in fin:
        pass # do something

Este mai clar în ceea ce privește intenția dvs. și prin utilizarea with fileobj va fi eliberat în cazul unei excepții sau la sfârșitul blocului.

Comentarii

  • A doua metodă citește totuși fișierul linie cu linie și nu încarcă întregul fișier în memorie, nu-i așa? –  > Por nishant.
  • @nishant da, este o utilizare mai bună/eficientă a memoriei –  > Por Walid.