Jak się powiedziało "A", trzeba powiedzieć "B" :D! Tak teraz robię i po szczegółowym wyjaśnieniu w jaki sposób odczytać dowolny plik tekstowy w Pythonie, zrobimy na odwrót czyli wykonamy zapis do pliku tekstowego. Programowanie zapisu też nie należy do najtrudniejszych zadań intelektualnych. Szczegóły w środku!
Tweet |
JAK PRAWIDŁOWO PRZEPROWADZIĆ ZAPIS DO PLIKU TEKSTOWEGO?
Porównując to do odczytywania, tutaj sprawa jest jeszcze prostsza gdyż nie dosyć, że nie będą nam potrzebne żadne importy modułów, to nawet będzie można wykonać zabieg zapisu przy użyciu funkcji którą poznaje jako pierwszą zdecydowana większość uczących się Pythona!!!
TRYB OBSŁUGI PLIKU
Zanim zabierzecie się za jakiekolwiek wpisywanie danych, musicie najpierw przygotować plik. Pierwszy krok jest wspólny dla każdej z metod obsługi. Musicie wywołać funkcję "open" podstawiając tryb obsługi na "w" (zapis do pliku). Nie szkodzi jeśli nie istnieje taki o podanej nazwie, Python sam go wtedy utworzy. Natomiast jeśli już istnieje, to zostanie on nadpisany! Gorąco zachęcam do tego, aby zaraz po następującej instrukcji:
file = open([ścieżka do pliku jako łańcuch znaków], "w")
dopisać sobie już teraz parę linijek niżej zamykanie pliku przy użyciu "close":
[plik].close()
Jeśli zrobicie to teraz, nie będziecie ryzykować, że zapomnicie o tym później jak rozprawicie się z większym problemem w przyszłych programach ;). Teraz można przystąpić do działania!
METODY ZAPISU DO PLIKU
Poznajcie dwa dziecinnie proste sposoby bezkonfliktowo realizujące zapis do pliku tekstowego.
KORZYSTAJĄC Z FUNKCJI "PRINT"
Niespodzianka! Znacie tę funkcję doskonale i możecie nie przypuszczać, że potrafi nieco więcej niż wypisać coś w powłoce. Mowa o funkcji "print". Jeden z opcjonalnych parametrów pozwala wykonać tak zwane "przekierowanie strumienia", o którym pisałem już w zeszłym roku. Manewr noszący to hasło polega na skierowaniu danych wyjściowych na inne źródło. Domyślnie jest nim powłoka Pythona, czyli na ludzki język, "nanosi" dane na ekran terminala. Tymczasem możemy "nakierować" strumień wyjściowy na wskazany przez nas plik, niekoniecznie tekstowy, stający się nowym źródłem dla przechowania danych. W efekcie końcowym, tekst który normalnie wyświetliłby się w powłoce, wyląduje w pliku, zatem de facto będziemy mieli zapis do pliku (jupi :D!).
Parametr o którym wspomniałem nosi nazwę "file" i wystarczy go dodać po przecinku zaraz po wprowadzonym tekście przekazując mu wówczas zmienną o "plikowym" typie danych. Dzięki niemu możliwy jest zapis do pliku tekstowego z poziomu funkcji "print". Po uruchomieniu programu, wywołanie tej funkcji wypisze swoje otrzymane dane tekstowe, lecz teraz nie naniesie ich na powłokę, tylko zapisze do wskazanego przez nas pliku. O dziwo, tutaj nie trzeba wymuszać kodowania znaków, tak jak to było potrzebne przy próbie odczytu.
"print" jest w stanie przekierować strumień wyjściowy na podany przez nas plik co czyni go jeszcze bardziej użyteczną funkcją.
Tytułem rozwiania wątpliwości: nazwy nie będą ze sobą kolidować. Plik może się nazywać "file" i nie pojawią się żadne komplikacje.
KORZYSTAJĄC Z METODY "WRITE"
Drugi sposób to skorzystanie z metody klasy "_io.TextWrapperIO" (czyli nasz plik) o nazwie "write". Wywołujemy ją ze zmiennej "plikowej", a za parametr wstawiamy łańcuch znaków jaki ma się tam znaleźć. Po wywołaniu, tekst natychmiast znajdzie się w pliku, z którego się metodę wywołało. Warto wspomnieć, że dodaje ona od siebie za każdym razem znak nowej linii, czyli każde wywołanie to zapis do jednego wiersza. Potem idzie następny.
Zapis do pliku tekstowego jest możliwy również poprzez użycie metody "write" z pliku.
Więcej o tym pisać nie trzeba.
Widzicie gołym okiem, że nic strasznego. Jeżeli macie doświadczenie w programowaniu w języku C, to dostrzeżecie mnóstwo podobieństw w zachowaniu również w Pythonie.