Jason. Cała informatyka w jednym miejscu!

Spragnieni wiedzy na temat postępowania przy otwieraniu plików tekstowych w Pythonie :D? Pomogę Wam je ugasić. Niniejszy artykuł zaprezentuje Wam jak krok po kroku zaprogramować odczyt pliku tekstowego. Programowanie takich rzeczy może budzić lęk i obawy co do stopnia trudności, natomiast w języku Python jest to proste i bezbolesne. Zapraszam.

ODCZYT PLIKU TEKSTOWEGO SKŁADA SIĘ Z KILKU ETAPÓW

Z całą pewnością niezbędnych będzie parę funkcji. Raz kolejny się powtórzę. Jeśli mowa o funkcjach, to nie ma konieczności importowania jakichkolwiek modułów do przeprowadzenia tej operacji w przeciwieństwie choćby do języka C.

OTWIERANIE PLIKÓW

Zacznijmy od funkcji, od której zaczyna się odczyt pliku tekstowego. Funkcja "open" zwraca referencję do podanego pliku. W miejsce jej parametrów wprowadzamy ścieżkę do pliku razem z rozszerzeniem oraz tryb otwarcia pliku jako łańcuch znaków. Istnieje kilka różnych "trybów otwarcia". Dwa podstawowe to "r", tylko do odczytu oraz "w", zapis. W tym artykule interesuje nas czytanie, zatem wstawiamy to pierwsze. Oto wzór wywołania:

file = open([ścieżka do pliku jako łańcuch znaków], "r")

Prościzna, prawda :)? Nie potrzeba żadnych modułów ani zabaw we wskaźniki. Funkcja "open" i to wszystko potrzebne do szczęścia.

Jeżeli piszecie po polsku lub w innym języku, w którym występują znaki diakrytyczne, możecie napotkać na problem występowania "krzaków". Banalnym rozwiązaniem na wspomniane "krzaki" jest dodanie trzeciego parametru zaraz po trybie odczytu dopisując jego nazwę "encoding" i przypisując łańcuch znaków "utf-8":

file = open([ścieżka do pliku jako łańcuch znaków], "r", encoding="utf-8")

Gwarantuję, że po powyższym dopisaniu parametru "encoding", wszystkie znaki będą pięknie wyświetlane, polskie też :D!

PRZEGLĄD ZAWARTOŚCI

Pierwszą rzeczą jakiej się można nauczyć w tym zakresie to przeczytanie całej jego zawartości. Znowu miłe zaskoczenie dla każdego z Was, bo do tego wystarczy tylko jedno wywołanie:

[plik].read()

Oto cała "trudność" gdy programujemy odczyt pliku tekstowego w Pythonie. Nie wierzycie? Uruchomcie taki program sami :)! Żadnych pętli, żadnych skomplikowanych rzeczy.

Należy jednak mieć świadomość, że wywołanie tej metody spowoduje "przejście" przez treść pliku w taki sposób, że ponowne jej wywołanie nie przyniesie tego samego rezultatu i nic nie zostanie odczytane! Aby zrozumieć dlaczego tak się dzieje, musicie zobaczyć jak się programuje taki odczyt w języku Java.

ZAMKNIĘCIE PLIKU

Początkujący bardzo często zapominają o tym, żeby po dokonanych operacjach zamknąć strumień wejściowy. Odkąd pamiętam, zawsze nazywało się to tak samo: "close". Tak jest i tutaj:

[plik].close()

Ja sam zapominałem o tym kilkanaście ładnych razy, dlatego przestrzegam przed tą obowiązkową zasadą. Operowałeś na pliku? To go potem zamknij!

Odczyt pliku tekstowego w Pythonie Działanie odczytu pliku tekstowego w Pythonie

Do odczytu pliku tekstowego w Pythonie wystarczą jedynie trzy funkcje: "open", "read" oraz "close". Parametr "encoding" zapobiega występowaniem krzaków w miejsce znaków diakrytycznych.

Podsumowując, wystarczą Wam tylko trzy instrukcje, aby prawidłowo zaprogramować odczyt pliku tekstowego: "open", "read" i "close".

MANIPULACJA W PRZEGLĄDANIU ZAWARTOŚCI

Aby ten wpis nie wyszedł na zbyt krótki, zaprezentuję troszkę więcej informacji jak bardzo łatwo można wpływać na wyświetlanie pobranych treści z pliku.

DZIELENIA ŁAŃCUCHA NA POJEDYNCZE WIERSZE

"splitlines" to metoda klasy "string" umożliwiająca "poćwiartowanie" łańcucha na listę łańcuchów, których dzieli separator znaku nowej linii ('\n'). Wywołując to z poziomu łańcucha zwracanego przez "read" w taki sposób:

[plik].read().splitlines()

ujrzymy listę wyodrębnionych łańcuchów.

Metoda "splitlines" klasy "string" w Pythonie

Metoda "splitlines" powoduje "pocięcie" łańcucha znaków na mniejsze kierując się separatorem jako znak nowej linii.

ODCZYT POJEDYNCZEGO WIERSZA

Jest taka metoda należąca do klasy plikowej ("_io.TextIOWrapper") nosząca nazwę "readline", dzięki której możemy odczytywać plik "po trochu". Metoda zwraca łańcuch znaków jako wiersz na którym obecnie "stoi", więc to też idzie tylko w jedną stronę:

[plik].readline()

Białe znaki na końcu (takie jak spacja) też przechwyci. Separator jaki metoda bierze pod uwagę to znak nowej linii ('\n'), tak jak było w poprzedniej metodzie.

Metoda "readline" klasy "_io.TextIOWrapper" w Pythonie

Metoda "readline" powoduje odczytanie tylko pierwszego wiersza z pobranego tekstu.


Traktujcie to jako pierwszy krok jak programować prawidłowy odczyt pliku tekstowego. Python zapewnia naprawdę bardzo przyjemną drogę do łatwego kodowania w tym zakresie. Nie zdziwcie jak zobaczycie, jak to wygląda w języku C :).

PODOBNE ARTYKUŁY