Próba zapisu do nowego pliku

Tworzenie i zapis do pliku jest drugą najważniejszą operacją (razem z odczytem danych z pliku). W tej lekcji pokażemy jak zapisać dane do pliku i o czym powinieneś pamiętać 😉 Na końcu tej lekcji naszym oczekiwanym rezultatem, będzie skrypt, za pomocą którego stworzymy plik o zadanej zawartości.

Pierwszy skrypt

Oto nasz kod z odczytu pliku:

file = open("./testFiles/fileToRead.txt")
print(file.read())

Przypomnijmy: Funkcja open() zwraca obiekt pliku który przechowujemy w zmiennej file.

Obiekt pliku posiada wiele interesujących metod. Jedną z nich już poznaliśmy – była to metoda read(), która służyła do odczytania całej zawartości pliku. Teraz poznamy drugą podstawową metodę – write().Służy ona do zapisu danych do pliku. Metoda ta również może stworzyć plik, w przypadku gdy ten nie istnieje jeszcze na dysku.

Sposób wykorzystania metody write() jest dość prosty, potrzebujemy obiekt pliku i już możemy działać:

file.write('Hello jaktestowac.pl!')

Metoda ta przyjmuje jako argument ciąg znaków (tekst), który chcemy zapisać do pliku. Nie brzmi to jak coś trudnego, prawda? 😉 Aby przetestować zapis do pliku przygotujmy nowy skrypt o nazwie write_file.py. Umieścimy go w głównym katalogu projektu:

C:\
+-- Projects
|   +-- pythonFiles
|       +-- testFiles
|           +-- fileToRead.txt
|       +-- venv
|       +-- read_file.py
|       +-- write_file.py

Zacznijmy zatem komponować zawartość skryptu write_file.py. Na początek podkradniemy (przekopujemy) pierwszą linię z poprzedniego skryptu:

file = open("./testFiles/fileToRead.txt")

W sumie nie do końca chcemy eksperymentować na naszym pliku fileToRead.txt. Dodajmy więc w katalogu testFiles nowy plik tekstowy fileToWrite.txt. Wystarczy nam pusty plik – będziemy do niego pisać automatycznie.

Tak powinien wyglądać nasz zestaw plików w projekcie:

C:\
+-- Projects
|   +-- pythonFiles
|       +-- testFiles
|           +-- fileToRead.txt
|           +-- fileToWrite.txt
|       +-- venv
|       +-- read_file.py
|       +-- write_file.py

Aby wykorzystać metodę write() potrzebujemy obiektu pliku, czyli u nas jest to file. Obiekt ten otrzymujemy za pomocą funkcji open(). Tak samo jak w przypadku odczytu zawartości pliku 😉

Na obiekcie pliku file użyjmy metody write(), aby zapisać ciąg znaków do pliku:

file.write('Hello jaktestowac.pl!')

Po wykonanych operacjach nie możemy zapomnieć o zamknięciu pliku:

file.close()

Całą zawartość write_file.py będzie wyglądała w sposób następujący:

file = open("./testFiles/fileToWrite.txt")
file.write('Hello jaktestowac.pl!')
file.close()

Teraz możemy uruchomić nasz skrypt, aby zobaczyć jaki będzie jego wynik 😉

Uruchomienie i analiza wyniku

Aby uruchomić nasz skrypt wystarczy kliknąć prawym przyciskiem myszy w dowolnym miejscu w oknie z zawartością naszego skryptu i wybrać z menu podręcznego opcję Run ‘write_file’.
Po uruchomieniu skryptu na konsoli powinien ukazać się następujący wynik:

Traceback (most recent call last):
  File "C:/Projects/pythonFiles/write_file.py", line 2, in 
    f.write('Hello jaktestowac.pl!')
io.UnsupportedOperation: not writable

Process finished with exit code 1

Coś najwyraźniej nie poszło po naszej myśli… 🙁 Gdy przyjrzymy się wiadomości błędu, to ujrzymy tam not writable. Oznacza to, że plik nie jest otwarty do zapisu. Co to znaczy i jak otworzyć plik do zapisu?

Na te pytania odpowie nam zagadnienie pt. tryby dostępu.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *