Cerințe preliminare:
Python oferă funcții încorporate pentru crearea, scrierea și citirea fișierelor. Există două tipuri de fișiere care pot fi gestionate în python, fișiere text normale și fișiere binare (scrise în limbaj binar, 0 și 1). În acest articol, vom studia citirea rând cu rând dintr-un fișier.
Metoda 1: Citiți un fișier linie cu linie folosind readlines()
readlines() este folosit pentru a citi toate liniile dintr-o singură mișcare și apoi le returnează ca fiecare linie un element șir dintr-o listă. Această funcție poate fi utilizată pentru fișiere mici, deoarece citește întregul conținut al fișierului în memorie, apoi îl împarte în linii separate. Putem itera lista și elimina caracterul „ ” de linie nouă folosind funcția strip().
Exemplu:
Python3
# Python code to> # demonstrate readlines()> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # writing to file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines(L)> file1.close()> # Using readlines()> file1>=> open>(>'myfile.txt'>,>'r'>)> Lines>=> file1.readlines()> count>=> 0> # Strips the newline character> for> line>in> Lines:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> |
>
>
Ieșire:
Line1: Geeks Line2: for Line3: Geeks>
Complexitatea temporală a codului Python dat este O(n), unde n este numărul total de linii din fișier
Complexitatea spațiului auxiliar al codului este O(n), unde n este numărul total de linii din fișier.
Metoda 2: Citiți un fișier linie cu linie folosind readline()
Funcția readline() citește o linie a fișierului și o returnează sub forma șirului. Este nevoie de un parametru n, care specifică numărul maxim de octeți care vor fi citiți. Cu toate acestea, nu citește mai mult de o linie, chiar dacă n depășește lungimea liniei. Va fi eficient atunci când citiți un fișier mare, deoarece în loc să preia toate datele dintr-o singură mișcare, preia linie cu linie. readline() returnează următoarea linie a fișierului care conține un caracter newline la sfârșit. De asemenea, dacă se ajunge la sfârșitul fișierului, acesta va returna un șir gol.
Exemplu:
ABORDAREA PAS CU PAS:
- Creați o listă L cu trei elemente șir care conțin caractere newline.
- Deschideți un fișier numit myfile.txt în modul de scriere și atribuiți-l variabilei fișier1.
- Scrieți conținutul listei L în fișier folosind metoda writelines() a obiectului fișier fișier1.
- Închideți obiectul fișier file1 folosind metoda close().
- Deschideți fișierul denumit myfile.txt în modul de citire și atribuiți-l variabilei fișier1.
- Inițializați un număr de variabile la 0.
- Începeți o buclă infinită.
- Creșteți numărul de variabile cu 1 în fiecare iterație a buclei.
- Citiți următoarea linie din fișierul obiect file1 folosind metoda readline() și atribuiți-o liniei variabile.
- Verificați dacă variabila de linie este goală. Dacă este gol, înseamnă că s-a ajuns la sfârșitul fișierului. În acest caz, ieșiți din buclă folosind instrucțiunea break.
- Imprimați valoarea count și conținutul liniei folosind metoda format() a clasei șir. Metoda strip() este folosită pentru a elimina caracterul nou linie de la sfârșitul liniei.
- Închideți obiectul fișier file1 folosind metoda close().
Python3
# Python program to> # demonstrate readline()> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # Writing to a file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines((L))> file1.close()> # Using readline()> file1>=> open>(>'myfile.txt'>,>'r'>)> count>=> 0> while> True>:> >count>+>=> 1> ># Get next line from file> >line>=> file1.readline()> ># if line is empty> ># end of file is reached> >if> not> line:> >break> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> file1.close()> |
>
>
Ieșire:
Line1 Geeks Line2 for Line3 Geeks>
Metoda 3: Citiți un fișier linie cu linie folosind bucla for
Un obiect iterabil este returnat de funcția open() în timpul deschiderii unui fișier. Acest ultim mod de a citi un fișier linie cu linie include iterarea peste un obiect fișier într-o buclă. Făcând acest lucru, profităm de o funcție Python încorporată care ne permite să iterăm peste obiectul fișier implicit folosind o buclă for în combinație cu utilizarea obiectului iterabil. Această abordare necesită mai puține linii de cod, ceea ce este întotdeauna cea mai bună practică demnă de urmat.
Exemplu:
Python3
# Python program to> # demonstrate reading files> # using for loop> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # Writing to file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines(L)> file1.close()> # Opening file> file1>=> open>(>'myfile.txt'>,>'r'>)> count>=> 0> # Using for loop> print>(>'Using for loop'>)> for> line>in> file1:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Closing files> file1.close()> |
>
>
Ieșire:
Using for loop Line1: Geeks Line2: for Line3: Geeks>
Metoda 4: Citiți un fișier linie cu linie folosind bucla și înțelegerea listei
O listă de înțelegere constă din paranteze care conțin expresia, care este executată pentru fiecare element împreună cu bucla for pentru a repeta peste fiecare element. Aici, vom citi fișierul text și vom imprima datele brute, inclusiv caracterul de linie nouă, într-o altă ieșire, am eliminat toate caracterele de linie nouă din listă.
Exemplu
Python3
with>open>(>'myfile.txt'>) as f:> >lines>=> [line>for> line>in> f]> print>(lines)> # removing the new line characters> with>open>(>'myfile.txt'>) as f:> >lines>=> [line.rstrip()>for> line>in> f]> print>(lines)> |
>
>
Ieșire:
['Geeks ', 'For ', 'Geeks'] ['Geeks', 'For', 'Geeks']>
Cu declarație
În abordările de mai sus, de fiecare dată când fișierul este deschis, este necesar să fie închis în mod explicit. Dacă cineva uită să închidă fișierul, este posibil să introducă mai multe erori în cod, adică multe modificări ale fișierelor nu intră în vigoare până când fișierul este închis corespunzător. Pentru a preveni acest lucru, se poate folosi declarația. Declarația With din Python este utilizată în gestionarea excepțiilor pentru a face codul mai curat și mult mai lizibil. Simplifică gestionarea resurselor comune, cum ar fi fluxurile de fișiere. Observați următorul exemplu de cod despre modul în care utilizarea declarației with face codul mai curat. Nu este nevoie să apelați file.close() când se utilizează cu instrucțiunea. Declarația în sine asigură achiziția și eliberarea adecvată a resurselor.
Exemplu:
Python3
# Python program to> # demonstrate with> # statement> L>=> [>'Geeks
'>,>'for
'>,>'Geeks
'>]> # Writing to file> with>open>(>'myfile.txt'>,>'w'>) as fp:> >fp.writelines(L)> # using readlines()> count>=> 0> print>(>'Using readlines()'>)> with>open>(>'myfile.txt'>) as fp:> >Lines>=> fp.readlines()> >for> line>in> Lines:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Using readline()> count>=> 0> print>(>'
Using readline()'>)> with>open>(>'myfile.txt'>) as fp:> >while> True>:> >count>+>=> 1> >line>=> fp.readline()> >if> not> line:> >break> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Using for loop> count>=> 0> print>(>'
Using for loop'>)> with>open>(>'myfile.txt'>) as fp:> >for> line>in> fp:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> |
javascript
>
>
Ieșire:
Using readlines() Line1: Geeks Line2: for Line3: Geeks Using readline() Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks>