Niniejszy artykuł zaprezentuje Ci jak krok po kroku zaprogramować odczyt pliku tekstowego w języku Python 🌟! Takie operacje mogą budzić przekonanie, że jest to trudne i wymagające niebywałych operacji, natomiast w języku Python jest to proste i bezbolesne ❤️. Zapraszam 😉!
PRZEDSTAWIAM JAK WYKONAĆ ODCZYT PLIKU TEKSTOWEGO W JĘZYKU PYTHON!
Python bardzo ułatwia obsługę plików tekstowych i tak jak w niektórych językach trzeba skorzystać z większej liczby funkcji do programowania samego procesu odczytu, tak tutaj wystarczy Ci jedna funkcja 😄!
JAK OTWORZYĆ PLIK TEKSTOWY W JĘZYKU PYTHON?
Wystarczy skorzystać z funkcji "open"! Po podaniu parametrów w postaci ścieżki do pliku tekstowego i trybu odczytu pliku (dalej wyjaśniam co to oznacza), Python odnajduje plik tekstowy i otwiera go 📂. To jest przykład użycia, który zakłada występowanie pliku tekstowego o nazwie "file.txt" w tym samym katalogu, w którym znajduje się Twój skrypt 👇:
my_file = open('file.txt', 'r')Przyjrzyjmy się samemu wywołaniu 👀.
Najpierw podajesz ścieżkę względną do pliku tekstowego jaki masz zamiar odczytać w postaci łańcucha znaków 1️⃣. Ścieżka względna oznacza taką ścieżkę, której "początkiem" czy jej "korzeniem" jest katalog, w którym znajduje się skrypt z tym kodem ℹ️. Funkcja "open" gdy próbuje wyszukać plik, zaczyna zawsze od katalogu ze skryptem - nie od dysku C, "Program Files" czy jakiegokolwiek innego kluczowego miejsca 🔥. W sytuacji nieznalezienia pliku o podanej nazwie, Python natychmiast zgłasza błąd typu "FileNotFoundError" i przerywa dalsze wykonywanie programu (chyba, że dodaliśmy przechwytywanie wyjątku) ❌.
Zauważ, że występuje też rozszerzenie "txt" i ono także musi występować jako fragment łańcucha ⚠️!
Plik tekstowy może jak najbardziej znajdować się w innym katalogu znajdującym się w katalogu ze skryptem 😅. Gdyby Ci się tak zdarzyło, wtedy w ścieżce podajesz najpierw nazwę katalogu, oddzielasz znakiem ukośnika (/) i wtedy dopiero wpisujesz nazwę pliku z rozszerzeniem 💡.
Drugim parametrem jest tryb obsługi pliku i to również jest łańcuch znaków 2️⃣.
JAKIE WYSTĘPUJĄ TRYBY OBSŁUGI PLIKU W JĘZYKU PYTHON?
Python wspiera kilka następujących trybów obsługi 👇:
| TRYB | ZNACZENIE |
| 'r' | otwarcie dla odczytu |
| 'w' | otwarcie dla zapisu z wyczyszczeniem aktualnej zawartości |
| 'x' | otwarcie dla utworzenia (jeżeli plik już istnieje, wtedy zgłasza błąd "FileExistsError") |
| 'a' | otwarcie dla zapisu dodając zmiany na końcu pliku, jeśli istnieje |
| 'b' | tryb binarny |
| 't' | tryb tekstowy (domyślny) |
| '+' | otwarcie dla aktualizacji (zapis i odczyt) |
Więcej informacji znajdziesz oczywiście w oficjalnej dokumentacji Pythona 📖. Nas interesuje odczyt, zatem wpisujemy tryb 'r' 😊.
To jest wszystko! Jeżeli Python znajdzie plik, do którego bezbłędnie wprowadziliśmy ścieżkę, to zostanie otwarty i od tej chwili możemy przeprowadzać operacje odczytu 🔥!
Funkcja "open" odpowiedzialna jest za otwarcie pliku celem umożliwienia wykonywania na nim operacji. Jeżeli nie uda się odnaleźć pliku o wskazanej ścieżce, to dalsze działanie programu zostaje natychmiast przerwane!
Przyjrzyjmy się metodom 👀!
JAKIE WYSTĘPUJĄ METODY DO ODCZYTU PLIKU TEKSTOWEGO W JĘZYKU PYTHON?
Oto 3 takie najbardziej podstawowe metody służące do odczytu danych z pliku tekstowego w Pythonie 👇:
- read,
- readline,
- readlines.
Krótko przedstawię każdą z nich, a Tobie przypomnę o oficjalnej dokumentacji, z której możesz dowiedzieć się jeszcze więcej na ten temat 📖.
READ
Metoda "read" zwraca całą zawartość pliku albo jak największą część w przypadku, gdy dojdzie do przekroczenia maksymalnego rozmiaru bufora 📈. Bufor jest miejscem do magazynowania danych pomiędzy miejscem początkowym (plik), a docelowym (strumień wyjściowy) i jest po to, aby ograniczyć obciążające procesor operacje przekazywania danych i zapewnić asynchroniczność przy różnicy szybkości po obu "stronach" 💡.
To jest przykład użycia metody 👇:
print(my_file.read())Efektem będzie ujrzenie calutkiej zawartości pliku, od pierwszego do ostatniego wiersza 👍.
Metoda "read" zwraca za jednym zamachem całą zawartość pliku, od pierwszego do ostatniego wiersza.
READLINE
"readline" jak nazwa wskazuje, zwraca cały jeden wiersz zawartości pliku. Ten przykład 👇:
print(my_file.readline())sprawi, że po uruchomieniu programu ujrzysz w konsoli całą zawartość pojedynczego wiersza 📜. Znak jaki metoda bierze pod uwagę do rozdzielania wierszy, to znak nowej linii ('\n') ℹ️.
Musisz wiedzieć, że przy każdorazowym wywołaniu tej metody, Python od razu przechodzi do kolejnego wiersza i robi to sukcesywnie, aż dojdzie do ostatniego ⚠️! Dlatego nie bądź zdziwiony(-a), gdy za każdym razem ujrzysz kolejny wiersz i kolejny 😳.
Metoda "readline" zwraca jeden wiersz zawartości pliku.
READLINES
"readlines" zwraca nam listę łańcuchów znaków w charakterze pojedynczych wierszy, stąd najlepiej się z tego korzysta w połączeniu z pętlą "for" ℹ️. Tak wygląda przykład użycia 👇:
for line in my_file.readlines():
print(line, end='')Dla każdego wiersza pliku (elementu listy uzyskanej z metody "readlines"), wywołaj funkcję "print", aby jego zawartość wypisać na strumieniu wyjściowym ✍. Efektem będzie wyświetlenie każdego wiersza pliku jeden pod drugim ❤️.
Ponieważ rozpoczynanie od nowego wiersza już "zawiera się" w każdym z wierszy, wstawiamy dodatkowy parametr "end", aby usunąć znak nowej linii ('\n') z końca łańcucha znaków wpisanego w pierwszym parametrze 👍.
Metoda "readlines" zwraca listę łańcuchów znaków jako pojedynczych wierszy zawartości pliku.
Wszystko z metod, więc przechodzimy do kolejnego zagadnienia - zakończenie obsługiwania pliku 🔥!
JAK PRAWIDŁOWO ZAKOŃCZYĆ ODCZYT PLIKU TEKSTOWEGO W JĘZYKU PYTHON?
Po upewnieniu się, że zakończyliśmy wszelkie czynności związane z plikiem, który został wcześniej otwarty, należy zamknąć jego strumień 💥! Początkujący bardzo często o tym zapominają 😐. Jest to bardzo ważne, gdyż istnieje ryzyko, że jak tego nie zrobimy, to w dalszym ciągu funkcjonowania systemu operacyjnego na jakim pracujemy, plik dalej pozostanie "otwarty", a to będzie miało nieprzyjemne konsekwencje np. nie będziemy mogli usunąć pliku 🚫!
Plik zamykasz metodą "close" 👇:
my_file.close()Tyle. Wtedy plik zostanie bezpiecznie zamknięty 🔒.
Metoda "close" zamyka strumień do obsługi pliku i sprawia, że można go nadal obsługiwać przez system operacyjny, jak każdy inny plik.
JAK WYŚWIETLIĆ POLSKIE ZNAKI PODCZAS ODCZYTU PLIKU TEKSTOWEGO W JĘZYKU PYTHON?
Jeżeli zamiast polskich znaków 🇵🇱 pokazują Ci się tzw. "krzaki", czyli znaki pozbawione sensu w miejscach, które powinny wyświetlać litery, do wywołania funkcji "open" dopisz dodatkowy parametr "encoding" i wskaż na kodowanie według UTF-8 👇:
my_file = open('file.txt', 'r', encoding='utf-8')Po ponownym uruchomieniu programu, problem powinien zniknąć 🙂.
Tak się kończy materiał o odczycie pliku tekstowego ✅. Podsumowując, wystarczą nam tylko 3 wywołania, aby prawidłowo wykonać odczyt pliku tekstowego: "open", "read" i "close" 3️⃣. Python naprawdę bardzo ułatwia tę operację i w niektórych innych językach możesz się zdziwić liczbą instrukcji celem wykonania tego samego 😏.