Predpogoji:
Python nudi vgrajene funkcije za ustvarjanje, pisanje in branje datotek. Python lahko obdeluje dve vrsti datotek, običajne besedilne datoteke in binarne datoteke (napisane v binarnem jeziku, 0 in 1). V tem članku bomo preučevali branje vrstice za vrstico iz datoteke.
1. način: branje datoteke vrstico za vrstico z readlines()
readlines() se uporablja za branje vseh vrstic naenkrat in jih nato vrne kot vsako vrstico kot element niza na seznamu. To funkcijo lahko uporabite za majhne datoteke, saj prebere celotno vsebino datoteke v pomnilnik in jo nato razdeli v ločene vrstice. Seznam lahko ponovimo in črtamo znak nove vrstice ' ' s funkcijo strip().
primer:
java sicer če
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()))> |
>
>
Izhod:
Line1: Geeks Line2: for Line3: Geeks>
Časovna kompleksnost dane kode Python je O(n), kjer je n skupno število vrstic v datoteki
Kompleksnost pomožnega prostora kode je O(n), kjer je n skupno število vrstic v datoteki.
2. način: branje datoteke vrstico za vrstico z readline()
funkcija readline() prebere vrstico datoteke in jo vrne v obliki niza. Vzame parameter n, ki določa največje število bajtov, ki bodo prebrani. Vendar ne prebere več kot ene vrstice, tudi če n presega dolžino vrstice. Učinkovit bo pri branju velike datoteke, saj namesto da bi vse podatke pridobil naenkrat, pridobiva vrstico za vrstico. readline() vrne naslednjo vrstico datoteke, ki na koncu vsebuje znak nove vrstice. Poleg tega, če je dosežen konec datoteke, vrne prazen niz.
primer:
PRISTOP KORAK ZA KORAKOM:
niz za klepet
- Ustvarite seznam L s tremi elementi niza, ki vsebujejo znake za novo vrstico.
- Odprite datoteko z imenom myfile.txt v načinu pisanja in jo dodelite spremenljivki file1.
- Zapišite vsebino seznama L v datoteko z uporabo metode writelines() datotečnega objekta file1.
- Zaprite datotečni objekt file1 z metodo close().
- Odprite datoteko z imenom myfile.txt v načinu branja in jo dodelite spremenljivki file1.
- Inicializirajte spremenljivko count na 0.
- Zaženite neskončno zanko.
- Povečajte število spremenljivk za 1 v vsaki ponovitvi zanke.
- Preberite naslednjo vrstico iz datotečnega objekta file1 z uporabo metode readline() in jo dodelite spremenljivki line.
- Preverite, ali je spremenljivka vrstice prazna. Če je prazno, pomeni, da je bil dosežen konec datoteke. V tem primeru prekinite zanko s stavkom break.
- Natisnite vrednost count in vsebino vrstice z uporabo metode format() razreda nizov. Metoda strip() se uporablja za odstranitev znaka za novo vrstico na koncu vrstice.
- Zaprite datotečni objekt file1 z metodo 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()> |
>
>
Izhod:
Line1 Geeks Line2 for Line3 Geeks>
3. način: Preberite datoteko vrstico za vrstico z uporabo zanke for
Ponovljivi objekt vrne funkcija open() med odpiranjem datoteke. Ta končni način branja datoteke po vrsticah vključuje ponavljanje datotečnega predmeta v zanki for. Pri tem izkoriščamo vgrajeno funkcijo Python, ki nam omogoča iteracijo po predmetu datoteke implicitno z uporabo zanke for v kombinaciji z uporabo predmeta, ki ga je mogoče ponoviti. Ta pristop zahteva manj vrstic kode, kar je vedno najboljša praksa, vredna sledenja.
primer:
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()> |
>
>
Izhod:
Using for loop Line1: Geeks Line2: for Line3: Geeks>
4. način: Preberite datoteko vrstico za vrstico z uporabo zanke for in razumevanja seznama
Razumevanje seznama je sestavljeno iz oklepajev, ki vsebujejo izraz, ki se izvede za vsak element skupaj z zanko for za ponavljanje vsakega elementa. Tukaj bomo prebrali besedilno datoteko in natisnili neobdelane podatke, vključno z znakom nove vrstice, v drugem izpisu pa smo s seznama odstranili vse znake nove vrstice.
Primer
ogrodje zbirk java
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)> |
mockito kadarkoli
>
>
Izhod:
['Geeks ', 'For ', 'Geeks'] ['Geeks', 'For', 'Geeks']>
Z izjavo
Pri zgornjih pristopih je treba vsakokrat, ko se datoteka odpre, izrecno zapreti. Če nekdo pozabi zapreti datoteko, lahko povzroči več napak v kodi, tj. veliko sprememb v datotekah ne začne veljati, dokler datoteka ni pravilno zaprta. Če želite to preprečiti, lahko uporabite izjavo. Stavek With v Pythonu se uporablja pri obravnavanju izjem, da je koda čistejša in veliko bolj berljiva. Poenostavlja upravljanje skupnih virov, kot so datotečni tokovi. Upoštevajte naslednji primer kode o tem, kako uporaba stavka with naredi kodo čistejšo. Pri uporabi s stavkom ni treba klicati file.close(). Sama izjava z zagotavlja pravilno pridobivanje in sprostitev virov.
primer:
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()))> |
>
>
Izhod:
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>