Předpoklady:
Python poskytuje vestavěné funkce pro vytváření, zápis a čtení souborů. V pythonu lze zpracovávat dva typy souborů, normální textové soubory a binární soubory (napsané v binárním jazyce, 0s a 1s). V tomto článku budeme studovat čtení ze souboru řádek po řádku.
Metoda 1: Čtení souboru řádek po řádku pomocí readlines()
readlines() se používá k načtení všech řádků najednou a pak jim vrátí jako každý řádek prvek řetězce v seznamu. Tuto funkci lze použít pro malé soubory, protože načte celý obsah souboru do paměti a poté jej rozdělí na samostatné řádky. Můžeme iterovat přes seznam a odstranit znak nového řádku ‚ ‘ pomocí funkce strip().
Příklad:
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()))> |
>
int řetězec java
>
Výstup:
Line1: Geeks Line2: for Line3: Geeks>
Časová složitost daného kódu Pythonu je O(n), kde n je celkový počet řádků v souboru
Pomocná prostorová složitost kódu je O(n), kde n je celkový počet řádků v souboru.
Metoda 2: Čtení souboru řádek po řádku pomocí readline()
Funkce readline() přečte řádek souboru a vrátí jej ve formě řetězce. Vyžaduje parametr n, který určuje maximální počet bajtů, které budou načteny. Nečte však více než jeden řádek, i když n přesahuje délku řádku. Bude to efektivní při čtení velkého souboru, protože místo načítání všech dat najednou, načítá řádek po řádku. readline() vrací další řádek souboru, který na konci obsahuje znak nového řádku. Také pokud je dosaženo konce souboru, vrátí prázdný řetězec.
Příklad:
PŘÍSTUP KROK ZA KROKEM:
- Vytvořte seznam L se třemi prvky řetězce obsahující znaky nového řádku.
- Otevřete soubor s názvem myfile.txt v režimu zápisu a přiřaďte jej proměnné file1.
- Zapište obsah seznamu L do souboru pomocí metody writelines() objektu file file1.
- Zavřete objekt souboru file1 pomocí metody close().
- Otevřete soubor s názvem myfile.txt v režimu čtení a přiřaďte jej proměnné file1.
- Inicializujte počet proměnných na 0.
- Spusťte nekonečnou smyčku.
- Zvyšte počet proměnných o 1 v každé iteraci cyklu.
- Přečtěte si další řádek ze souboru objektu file1 pomocí metody readline() a přiřaďte jej do proměnné řádek.
- Zkontrolujte, zda je proměnná řádku prázdná. Pokud je prázdný, znamená to, že byl dosažen konec souboru. V takovém případě opusťte smyčku pomocí příkazu break.
- Vytiskněte hodnotu count a obsah řádku pomocí metody format() třídy string. Metoda strip() se používá k odstranění znaku nového řádku na konci řádku.
- Zavřete objekt souboru file1 pomocí metody 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()> |
>
>
Výstup:
Line1 Geeks Line2 for Line3 Geeks>
Metoda 3: Čtení souboru řádek po řádku pomocí smyčky for
Iterovatelný objekt je vrácen funkcí open() při otevírání souboru. Tento poslední způsob čtení souboru řádek po řádku zahrnuje iteraci objektu souboru ve smyčce. Přitom využíváme vestavěnou funkci Pythonu, která nám umožňuje iterovat objektem souboru implicitně pomocí cyklu for v kombinaci s použitím iterovatelného objektu. Tento přístup vyžaduje méně řádků kódu, což je vždy nejlepší postup, který stojí za to následovat.
Příklad:
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()> |
>
>
Výstup:
Using for loop Line1: Geeks Line2: for Line3: Geeks>
Metoda 4: Čtení souboru řádek po řádku pomocí smyčky for a porozumění seznamu
Seznam se skládá ze závorek obsahujících výraz, který se provádí pro každý prvek spolu se smyčkou for pro iteraci každého prvku. Zde si přečteme textový soubor a vytiskneme nezpracovaná data včetně znaku nového řádku v jiném výstupu jsme odstranili všechny znaky nového řádku ze seznamu.
Příklad
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)> |
>
>
Výstup:
['Geeks ', 'For ', 'Geeks'] ['Geeks', 'For', 'Geeks']>
S prohlášením
Ve výše uvedených přístupech je nutné při každém otevření souboru explicitně zavřít. Pokud zapomenete soubor zavřít, může to způsobit několik chyb v kódu, tj. mnoho změn v souborech se neprojeví, dokud není soubor správně uzavřen. Chcete-li tomu zabránit, lze použít prohlášení. Příkaz With v Pythonu se používá při zpracování výjimek, aby byl kód čistší a mnohem čitelnější. Zjednodušuje správu běžných zdrojů, jako jsou datové proudy souborů. Podívejte se na následující příklad kódu, jak použití příkazu with dělá kód čistším. Při použití s příkazem není nutné volat file.close(). Samotný výpis zajišťuje řádné získávání a uvolňování zdrojů.
Příklad:
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()))> |
jakou mám velikost monitoru
>
>
Výstup:
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>