W tym materiale przedstawiam jak prosto przeprowadza się zapis do pliku tekstowego w języku Python 🎉! Opiszę Ci co trzeba zrobić krok po kroku i jakie są sposoby zapisu treści do pliku 👍. Szczegóły tematu jak zawsze w środku 🙂!
OTO JAK PRAWIDŁOWO PRZEPROWADZIĆ ZAPIS DO PLIKU TEKSTOWEGO W JĘZYKU PYTHON!
Python ma w sobie tę ogromną zaletę, że upraszcza wiele operacji, które w innych językach mogłyby być dla początkujących wręcz barierami nie do przeskoczenia ❤️. Tak jak było w przypadku odczytywania plików tekstowych, tak i tutaj wszystko zaczyna się od wywołania jednej funkcji i co więcej, to jest ta sama, którą mogłeś(-aś) poznać wcześniej 😄!
Najpierw ustalmy jak w ogóle utworzyć nowy plik tekstowy, bo od tego trzeba zacząć!
JAK STWORZYĆ PLIK TEKSTOWY W JĘZYKU PYTHON?
W Pythonie, pliki wszelkiego rodzaju, w tym tekstowe, tworzymy za pomocą funkcji "open", tej samej jakiej używamy też do otwierania plików 😊! Wystarczy podać ścieżkę do pliku tekstowego i jeden z trybów odczytu odpowiedzialny za zapis (wyjaśniam ten temat w dalszej części), a Python po uruchomieniu programu, utworzy na Twoich oczach nowy plik tekstowy 💾! Także nie szkodzi, jeśli go tam nie ma 😉. Należy jednak mieć świadomość, że skutek utworzenia pliku zależy od ustawionego trybu, bo jest kilka różnych ⚠️!
To jest przykładowe wywołanie funkcji "open" tworzące nowy plik tekstowy w tym samym katalogu, w którym znajduje się skrypt z poniższym wywołaniem 👇:
my_file = open('file.txt', 'w')Popatrzmy na samo wywołanie 👀.
Pierwszy parametr oznacza ścieżkę względną do pliku, który ma się pojawić na dysku 1️⃣. Podajemy ją w postaci łańcucha znaków. Ścieżkę względną nazywamy taką ścieżkę, której "miejscem startowym" czy "korzeniem" jest katalog, w którym znajduje się uruchomiony skrypt ℹ️. Oprócz tego, dopisujemy rozszerzenie pliku jako "txt" ⚠️!
Możesz też utworzyć plik wewnątrz innego katalogu, który znajduje się w katalogu razem ze skryptem 😁! Wystarczy dopisać bezbłędną nazwę tego katalogu tuż przed nazwą samego pliku z rozszerzeniem i rozdzielić je znakiem ukośnika (/) 💡. Tylko wiedz, że najpierw musisz utworzyć ten katalog, gdyż jeżeli go tam nie będzie, to Python nie utworzy go automatycznie, tylko zgłosi błąd "FileNotFoundError" i odmówi dalszego wykonywania kodu, jeśli nie dodaliśmy przechwytywania wyjątków ⛔.
Drugi parametr oznacza tryb obsługi pliku, który także jest łańcuchowego typu danych 2️⃣. Najlepiej przedstawić je wszystkie w formie tabelki 📜.
JAKIE WYSTĘPUJĄ TRYBY OBSŁUGI PLIKU W JĘZYKU PYTHON?
Python wspiera następują następujące tryby obsługi pliku 👇:
| 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) |
Oficjalna dokumentacja zawiera jeszcze bardziej szczegółowy opis trybów obsługi, więc najlepiej tam zasięgnąć więcej informacji 📖. Tutaj koncentrujemy się na trybie 'w', czyli utworzenie nowego pliku z wyczyszczeniem całej jego zawartości, jeśli istnieje ℹ️. Jeżeli zależy Ci na dopisywaniu nowej treści do pliku bez usuwania poprzedniej, sięgnij po tryb 'a' 👍.
Po wywołaniu tejże funkcji, plik zostanie utworzony i od razu przejdzie w stan "otwarty", dzięki czemu możemy wykonywać na nim operacje zapisu ❤️!
Funkcja "open" w kontekście zapisu, tworzy plik o podanej nazwie i rozszerzeniu (jeśli go nie ma) lub nadpisuje istniejący (jeśli istnieje).
To tyle z samego tworzenia pliku, więc możemy przejść do odpowiedzi na pytanie jak pisać treści do samego pliku 📝!
JAK WYKONAĆ ZAPIS DO PLIKU TEKSTOWEGO W JĘZYKU PYTHON?
W Pythonie są 2 proste sposoby na wykonanie zapisu treści do pliku tekstowego 👇:
- wywołując funkcję "print",
- wywołując metodę "write".
Szybko zademonstruję oba zapisy ⏩!
FUNKCJA "PRINT"
Niespodzianka 🚀! Ta sama funkcja, którą 99% początkujących poznaje jako pierwszą, jest zdolna do zapisu podanego łańcucha znaków do wskazanego pliku 🤩! Do znanego Ci wywołania, wystarczy dopisać jeden dodatkowy parametr o nazwie "file" i wskazać zmienną wskazującą na plik z funkcji "open" 👇:
print('Mój łańcuch znaków', file=my_file)I tyle 😄! Po wywołaniu tej funkcji stanie się dokładnie to samo, co przy "klasycznym" wywołaniu funkcji "print", tylko łańcuch znaków zamiast do powłoki, "wyląduje" w pliku 😁! Ponieważ domyślnie dopisuje znak nowego wiersza ('\n'), nie musisz go ręcznie dopisywać 👍!
Funkcja "print" może zostać "przekierowana" z powłoki Pythona do wskazanego pliku, dzięki czemu wprowadzony łańcuch znaków znajdzie się w pliku!
METODA "WRITE"
Odwołując się do zmiennej przechowującej referencję do pliku (uzyskanej przez wywołanie funkcji "open"), możesz skorzystać z metody "write" i wprowadzić łańcuch znaków jaki ma wejść do pliku 👇:
my_file.write('Mój łańcuch znaków')Ten sam efekt - dopisanie łańcucha do pliku, tylko tutaj już musimy zadbać o przechodzenie do nowego wiersza wstawiając znak nowej linii ('\n') ⚠️!
Metoda "write" pozwala na pisanie treści bezpośrednio do pliku.
JAK PRAWIDŁOWO ZAKOŃCZYĆ ZAPIS DO PLIKU TEKSTOWEGO W JĘZYKU PYTHON?
Gdy uznamy, że skończyliśmy zapisywać treść do pliku, należy koniecznie go zamknąć metodą "close"! Wywołując ją 👇:
my_file.close()dajesz Pythonowi znak, że może zamknąć strumień i nie blokować systemu operacyjnego do przeprowadzania z nim dalszych czynności ✅. Jeżeli tego nie zrobisz, plik dalej pozostanie "otwarty", a Ty nie będziesz w stanie go zmodyfikować np. zmieniając nazwę czy usuwając go ⛔!
Metoda "close" służy do zamknięcia strumienia obsługi pliku, sprawiając że nie jest dłużej "blokowany" wobec systemu operacyjnego.
JAK ZAPISAĆ DO PLIKU POLSKIE ZNAKI W JĘZYKU PYTHON?
Jeżeli chcesz poprawnie zapisywać do pliku polskie znaki 🇵🇱, należy w wywołaniu funkcji "open" dopisać parametr "encoding" i wskazać kodowanie znaków na UTF-8 👇:
my_file = open('file.txt', 'w', encoding='utf-8')Tylko wtedy zapobiegniesz sytuacji pojawiania się "krzaków" w miejsce polskich znaków ✅.
Temat zamknięty 😊. Jak widzisz, nic strasznego. Funkcja "open", jeden z dwóch sposobów zapisu, metoda "close" i już 😅. W niektórych innych językach będzie to wymagać dużo więcej roboty 🙂.