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.
