logo

Przeczytaj plik linia po linii w Pythonie

Warunki wstępne:

Python udostępnia wbudowane funkcje umożliwiające tworzenie, zapisywanie i odczytywanie plików. Istnieją dwa typy plików, które można obsługiwać w Pythonie: zwykłe pliki tekstowe i pliki binarne (zapisane w języku binarnym, zerami i jedynkami). W tym artykule przyjrzymy się czytaniu linia po linii z pliku.



Metoda 1: Czytaj plik wiersz po wierszu za pomocą funkcji readlines()

Funkcja readlines() służy do jednoczesnego odczytania wszystkich linii, a następnie zwrócenia ich jako elementu ciągu znaków na liście. Funkcję tę można zastosować w przypadku małych plików, gdyż wczytuje ona do pamięci całą zawartość pliku, a następnie dzieli ją na osobne linie. Możemy iterować po liście i usuwać znak nowej linii „ ” za pomocą funkcji strip().

Przykład:

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

>

>

Wyjście:

Line1: Geeks Line2: for Line3: Geeks>

Złożoność czasowa danego kodu Pythona wynosi O(n), gdzie n to całkowita liczba linii w pliku

Złożoność kodu w przestrzeni pomocniczej wynosi O(n), gdzie n to całkowita liczba wierszy w pliku.

Metoda 2: Czytaj plik wiersz po wierszu za pomocą funkcji readline()

Funkcja readline() odczytuje linię pliku i zwraca ją w postaci ciągu znaków. Pobiera parametr n, który określa maksymalną liczbę bajtów, które zostaną odczytane. Jednak nie czyta więcej niż jednej linii, nawet jeśli n przekracza długość linii. Będzie to efektywne przy czytaniu dużego pliku, ponieważ zamiast pobierać wszystkie dane za jednym razem, pobierane są linia po linii. readline() zwraca następną linię pliku zawierającą na końcu znak nowej linii. Ponadto, jeśli plik osiągnie koniec, zwróci pusty ciąg.

Przykład:

PODEJŚCIE KROK PO KROKU:

  1. Utwórz listę L z trzema elementami łańcuchowymi zawierającymi znaki nowej linii.
  2. Otwórz plik o nazwie mójplik.txt w trybie zapisu i przypisz go do zmiennej plik1.
  3. Zapisz zawartość listy L do pliku, korzystając z metody writelines() obiektu pliku file1.
  4. Zamknij obiekt pliku file1 za pomocą metody close().
  5. Otwórz plik o nazwie mójplik.txt w trybie odczytu i przypisz go do zmiennej plik1.
  6. Zainicjuj liczbę zmiennych na 0.
  7. Rozpocznij nieskończoną pętlę.
  8. Zwiększ liczbę zmiennych o 1 w każdej iteracji pętli.
  9. Przeczytaj kolejną linię z obiektu pliku file1 za pomocą metody readline() i przypisz ją do zmiennej line.
  10. Sprawdź, czy zmienna liniowa jest pusta. Jeśli jest pusty, oznacza to, że plik został osiągnięty. W takim przypadku wyjdź z pętli za pomocą instrukcji break.
  11. Wydrukuj wartość count i zawartość wiersza, używając metody format() klasy string. Metoda strip() służy do usuwania znaku nowej linii na końcu linii.
  12. Zamknij obiekt pliku file1 za 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()>

>

cyfry do alfabetu
>

Wyjście:

Line1 Geeks Line2 for Line3 Geeks>

Metoda 3: Czytaj plik wiersz po wierszu, używając pętli for

Iterowalny obiekt jest zwracany przez funkcję open() podczas otwierania pliku. Ostatni sposób czytania pliku linia po linii obejmuje iterację po obiekcie pliku w pętli for. Robiąc to, korzystamy z wbudowanej funkcji Pythona, która pozwala nam iterować po obiekcie pliku niejawnie, używając pętli for w połączeniu z użyciem obiektu iterowalnego. Takie podejście wymaga mniej linii kodu, co jest zawsze najlepszą praktyką godną naśladowania.

Przykład:

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

>

>

Wyjście:

Using for loop Line1: Geeks Line2: for Line3: Geeks>

Metoda 4: Czytaj plik wiersz po wierszu, używając pętli for i rozumienia list

Rozumienie listy składa się z nawiasów zawierających wyrażenie, które jest wykonywane dla każdego elementu wraz z pętlą for w celu iteracji po każdym elemencie. Tutaj przeczytamy plik tekstowy i wydrukujemy surowe dane, w tym znak nowej linii na innym wyjściu, usunęliśmy wszystkie znaki nowej linii z listy.

Przykład

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

>

>

Wyjście:

['Geeks
', 'For
', 'Geeks'] ['Geeks', 'For', 'Geeks']>

Z oświadczeniem

W powyższych podejściach za każdym razem, gdy plik jest otwierany, należy go jawnie zamknąć. Jeśli zapomni się zamknąć plik, może to wprowadzić kilka błędów w kodzie, tzn. wiele zmian w plikach zostaje wprowadzonych dopiero po jego prawidłowym zamknięciu. Aby temu zapobiec, można zastosować instrukcję. Instrukcja With w Pythonie jest używana do obsługi wyjątków, dzięki czemu kod jest czystszy i znacznie bardziej czytelny. Upraszcza zarządzanie typowymi zasobami, takimi jak strumienie plików. W poniższym przykładzie kodu zobaczysz, jak użycie instrukcji with sprawia, że ​​kod staje się czystszy. Nie ma potrzeby wywoływania file.close() podczas używania z instrukcją. Samo oświadczenie zapewnia prawidłowe pozyskiwanie i uwalnianie zasobów.

Przykład:

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

>

>

Wyjście:

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>