Dodatek: Tryby dostępu (ang. Access Modes) do plików

Poniżej spisaliśmy wszystkie tryby dostępu (ang. Access Modes), z jakich można korzystać podczas operacji na plikach. Podczas zapoznawania się z trybami warto mieć na uwadze dwa pojęcia, które pojawiają się w opisach:

  • wskaźnik – innymi słowy kursor, co można rozumieć w kontekście plików jako miejsce, od którego będziemy odczytywać lub dopisywać dane,
  • pliki binarne – innymi słowy wszystkie nietekstowe pliki, to rozróżnienie spowodowane jest tym, że Python w systemie Windows odrobinę inaczej traktuje pliki tekstowe i pliki binarne podczas odczytu i zapisu. Na innych systemach (Mac, Linux itp.) nie ma tej różnicy i dlatego można zamiennie stosować tryb zwykły i tryb binarny. Odrobinę więcej informacji można znaleźć w oficjalnej dokumentacji pod adresem Reading and Writing Files. Pliki binarne w odczycie i zapisie są traktowane inaczej niż pliki tekstowe. W plikach binarnych najmniejszą jednostka jest bajt, a w plikach tekstowych – znak, który w standarcie Unicode ma dwa bajty.

Przykład użycia

Poniżej zaprezentowaliśmy przykłady użycia trybów dostępu. Od użytego trybo zależy jakie operacje będziemy mogli wykonać na pliku.

Do zapisu danych do pliku służy tryb w (od write):

with open("./testFiles/fileToWriteWith.txt", mode='w') as file:
   file.write('Hello jaktestowac.pl! Saved with with!')

Natomiast do odczytu służy tryb r (od read):

with open("./testFiles/fileToWriteWith.txt", mode='r') as file:
   print(file.read())

Lista trybów dostępu

Tryby dostępu (ang. Access Modes) wraz z opisem:

Tryb Opis
r Domyślny tryb, w którym plik za pomocą funkcji open() otwierany jest jako tylko do odczytu. Wskaźnik ustawiany jest na początku pliku.
rb Tryb służący do odczytu binarnych plików, w którym plik otwierany jest jako tylko do odczytu. Wskaźnik ustawiany jest na początku pliku.
r+ Tryb, w którym plik otwierany jest zarówno jako do odczytu oraz do zapisu. Wskaźnik ustawiany jest na początku pliku.
rb+ Tryb służący do odczytu binarnych plików, w którym plik otwierany jest zarówno jako do odczytu oraz do zapisu. Wskaźnik ustawiany jest na początku pliku.
w Tryb, w którym plik otwierany jest w trybie do zapisu. Zawartość pliku jest nadpisywana, natomiast w przypadku, gdy plik nie istnieje, to jest on tworzony.
wb Tryb, w którym plik binarny otwierany jest w trybie do zapisu. Zawartość pliku jest nadpisywana, natomiast w przypadku, gdy plik nie istnieje, to jest on tworzony.
w+ Tryb, w którym plik otwierany jest zarówno jako do odczytu oraz do zapisu. Zawartość pliku jest nadpisywana, natomiast w przypadku, gdy plik nie istnieje, to jest on tworzony. Tryb ten różni się od trybu r+ tworzeniem pliku w przypadku, gdy ten nie istnieje.
wb+ Tryb, w którym plik binarny otwierany jest zarówno jako do odczytu oraz do zapisu. Zawartość pliku jest nadpisywana, natomiast w przypadku, gdy plik nie istnieje, to jest on tworzony.
a Tryb, w którym plik otwierany jest w trybie do zapisu z dołączeniem danych. Nowe dane dołączane są do końca danych w pliku, natomiast w przypadku, gdy plik nie istnieje, to jest on tworzony. Wskaźnik ustawiany jest na końcu pliku.
ab Tryb, w którym plik binarny otwierany jest w trybie do zapisu z dołączeniem danych. Nowe dane dołączane są do końca danych w pliku, natomiast w przypadku, gdy plik nie istnieje, to jest on tworzony. Wskaźnik ustawiany jest na końcu pliku.
a+ Tryb, w którym plik otwierany jest w trybie do odczytu oraz do zapisu z dołączeniem danych. Nowe dane dołączane są do końca danych w pliku, natomiast w przypadku, gdy plik nie istnieje, to jest on tworzony. Wskaźnik ustawiany jest na końcu pliku.
ab+ Tryb, w którym plik binarny otwierany jest w trybie do odczytu oraz do zapisu z dołączeniem danych. Nowe dane dołączane są do końca danych w pliku, natomiast w przypadku, gdy plik nie istnieje, to jest on tworzony. Wskaźnik ustawiany jest na końcu pliku.

Najczęstszymi trybami dostępu, z jakich najpewniej będziesz korzystał, to:

  • w – ten tryb możesz spotkać w przypadkach, gdy w trakcie testów tworzymy pliki z danymi testowymi lub logi, czyli pliki zawierające szczegółowe informacje o danych użytych w krokach, odpowiedziach systemu itp, które w przypadku błędu mogą pomóc przy analizie problemu. W tym trybie trzeba uważać, gdyż jeśli plik istnieje to jest on nadpisywany. Dlatego warto pomyśleć o unikalnej nazwie pliku, która na przykład zawiera aktualną godzinę.
  • a – ten tryb, podobnie jak poprzedni, bywa również czasem używany do logowania – w tym przypadku nowe informacje są dopisywane do końca pliku. Tutaj niebezpieczeństwem mogą być stale zwiększające się rozmiary jednego pliku 😉
  • r – spotkasz go zazwyczaj w momentach, gdy będzie trzeba odczytać wrażliwe/ważne dane takie, jak konfiguracja, której nie chciałbyś przypadkiem nadpisać 😉

Wszystko zależy od kontekstu i dlatego warto znać dostępne możliwości 😉 Wrócimy do zastosowania niektórych z tych trybów w tworzonym przez nas frameworku do testów.

Dodaj komentarz

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