Stronę tą wyświetlono już: 6417 razy
Otwieranie pliku
Jak to zazwyczaj bywa, aby wykonać jakąś operację odczytu czy też zapisu do pliku trzeba najpierw plik otworzyć. Do tego celu służy funkcja open. Oto przykład użycia tej funkcji:
Pierwszym argumentem jest oczywiście ścieżka do pliku, która może być względna lub bezwzględna. Drugi argument jest nieco ciekawszy i może przyjmować kilka różnych wariantów:
- "w" - otwieranie tylko do zapisu;
- "r" - otwieranie tylko do odczytu;
- "x" - tworzy nowy plik i otwiera go do zapisu;
- "a" - otwiera tylko do zapisu ustawiając miejsce zapisu na koniec pliku, tryb ten działa poprawnie jedynie gdy plik istnieje;
- "b" - tryb zapisu / odczytu binarnego;
- "t" - tryb zapisu / odczytu tekstowego (domyślny);
- "+" - otwiera plik do odczytu i zapisu.
Kolejny parametr pominę, jest on związany z buforowaniem. Jego wartość może zostać ustawiona na 0 w celu wyłączenia buforowania (dopuszczalne jedynie w trybie binarnym). Domyślna wartość dla tego parametru jest -1, co oznacza że doborem rozmiaru bufora będzie się zajmowała metoda wewnętrzna uchwytu pliku pozyskanego za pomocą funkcji open.
Ostatni argument, którym ja się zainteresowałem to kodowanie naszego pliku. Domyślnie program użyłby kodowania systemowego a ten (jak sama nazwa wskazuje) zależy od ustawień systemu. Nie wiem jak wam, ale mi się to nie spodobało, dlatego też pokazałem jak można samemu wybrać sobie sposób kodowania w tym przypadku "utf-8".
Zapis danych do pliku
Otrzymany za pomocą funkcji open uchwyt pliku, można wykorzystać do zapisu danych (pod warunkiem, że plik został utworzony w odpowiednim trybie). Oto przykład zapisu do pliku danych za pomocą metody write:
Zamykanie pliku
Po zapisaniu tego, co miało zostać zapisane trzeba plik zamknąć, do czego służy oczywiście następująca metoda close:
Zapisywanie danych do pliku
O wiele ciekawszym procesem jest odczytywanie danych z pliku, co oczywiście wymaga odmiennego tryby otwierania tegoż pliku. Pierwszy przykład umożliwia odczytanie całego pliku w całości za pomocą metody read:
Metoda read może wczytywać określoną liczbę znaków, np. w taki oto sposób:
Powyższy kod wczyta jedynie dwa pierwsze znaki z pliku plik.txt.
Można też do tego samego problemu podejść nieco inaczej i wczytać tekst linijka po linijce:
Warto zwrócić uwagę na fakt, że nie ma w powyższym kodzie miejsca dla metody close, czyżbym o niej zapomniał? Ależ skądże znowu, po prostu metoda ta nie jest w tym przypadku potrzebna, ponieważ po zakończeniu wypisywania danych z pliku ten zostanie automatycznie zamknięty.
Zmiana miejsca odczytu/zapisu w pliku
Otwórzmy nasz nieszczęsny plik do zapisu i odczytu oraz posłużmy się metodą seek w celu zmiany miejsca zapisu i odczytu danych pliku:
Ustalanie bieżącego położenia w pliku
Bieżące położenie punktu zapisu lub odczytu danych pliku można pozyskać za pomocą metody tell: