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, inf.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.