CodeGym /Kursy /Python SELF PL /Czytanie danych z pliku

Czytanie danych z pliku

Python SELF PL
Poziom 21 , Lekcja 1
Dostępny

2.1 Czytanie całego pliku

W Pythonie jest kilka sposobów czytania plików tekstowych. Każda z tych metod ma swoje zalety i nadaje się do różnych sytuacji. Główne sposoby czytania plików tekstowych to: czytanie całej zawartości, czytanie linia po linii, czytanie z określeniem liczby znaków i inne.

Metoda read() odczytuje całą zawartość pliku jako jeden ciąg znaków.


file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()

To bardzo prosty sposób na odczytanie pliku - jedno wywołanie metody i cała zawartość pliku jest w jednym ciągu znaków. Ma to swoje minusy – jeśli plik zawiera na przykład 200 MB logów, będzie czytany wolno, a pamięć aplikacji szybko się skończy.

2.2 Czytanie wszystkich linii pliku

Istnieje pewna alternatywa dla metody read() - to metoda readlines(). Również odczytuje całość pliku do pamięci, ale zwraca go nie jako jeden duży ciąg znaków, lecz jako listę linii - każda linia pliku jako oddzielna pozycja listy.

Metoda readlines() odczytuje wszystkie linie pliku i zwraca je jako listę linii.


file = open('example.txt', 'r')
lines = file.readlines()
for line in lines:
    print(line.strip())  # strip() usuwa zbędne spacje i znaki nowej linii
file.close()

Taki sposób może być wygodny, jeśli wiesz z góry, że musisz przetwarzać zawartość pliku linia po linii. Minusem jest to, że metoda ta może zużywać dużo pamięci dla bardzo dużych plików, ponieważ wszystkie linie są ładowane do pamięci.

2.3 Iteracja po liniach pliku

Obiekt file ma wbudowany iterator, więc można przejść po jego zawartości za pomocą pętli for. Pozwala to na czytanie pliku linia po linii bez ładowania całego pliku do pamięci.

Przykład:


file = open('example.txt', 'r')
for line in file:
    print(line.strip())  
file.close()

Ta metoda jest bardziej efektywna pod względem pamięci dla dużych plików, ponieważ linie są czytane pojedynczo. Jednak może być trudniejsza do użycia, jeśli trzeba wrócić do poprzedniej linii lub zmienić kolejność czytania.

Porównajmy jeszcze raz to podejście z poprzednim:

Użycie iteratora Użycie funkcji readlines()

file = open('example.txt', 'r')

for line in file:
    print(line.strip())  
                            
file.close()
                

file = open('example.txt', 'r')
            
lines = file.readlines()
for line in lines:
    print(line.strip())  
                        
file.close()
                

Ten sposób jest prostszy i szybszy. Jednak gdy będziesz pracować nad rzeczywistymi projektami, czasami będzie szybciej załadować wszystkie dane do pamięci od razu i pracować na nich tam.

Metody readline() i readlines() służą do czytania linii z pliku, ale działają w różny sposób. readline() czyta jedną linię na raz, co pozwala kontrolować proces czytania i nie ładować całego pliku do pamięci. Jest to przydatne, kiedy trzeba przetwarzać plik linia po linii lub kiedy plik jest zbyt duży do pełnego załadowania do pamięci.

readlines(), z drugiej strony, czyta wszystkie linie pliku naraz i zwraca je jako listę. Metoda ta jest wygodna, jeśli chcesz szybko uzyskać wszystkie linie pliku do dalszego przetwarzania. Zużywa jednak więcej pamięci, zwłaszcza dla dużych plików, ponieważ cały plik jest ładowany do pamięci w całości.

W zależności od zadania, readline() może być preferowane, jeśli ważne jest oszczędzanie pamięci i kontrola nad procesem czytania, a readlines() jest wygodne, gdy potrzebujesz szybko uzyskać wszystkie linie pliku do przetwarzania.

2.4 Czytanie części pliku

Jeśli plik jest zbyt duży, możesz go czytać partiami. Do metody read(n) możesz przekazać parametr n – liczbę znaków, które chcesz przeczytać. Jeśli w pliku jest mniej znaków niż n, metoda read() po prostu odczyta cały plik do końca.

Przykład:


file = open('example.txt', 'r')
content = file.read(10)  # Czyta pierwsze 10 znaków
print(content)
file.close()

To wygodne do czytania dużych plików partiami lub do przetwarzania stałych bloków danych. Ale taki sposób ignoruje podział pliku na linie - linie mogą być przerywane w środku.

2.5 Czytanie pliku linia po linii

Jeśli z jakiegoś powodu nie chcesz używać iteratora, możesz ręcznie czytać plik linia po linii. Do tego obiekt file ma metodę readline(). Nie mylić z readlines().

Metoda readline() odczytuje jedną linię z pliku naraz.

Przykład:


file = open('example.txt', 'r')
line = file.readline()
while line:
    print(line.strip())
    line = file.readline()
file.close()

W tym przykładzie czytamy zawartość pliku linia po linii, dopóki odczytana linia nie będzie pusta.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION