Operacje we/wy na plikach
Stronę tą wyświetlono już: 4834 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:
- file = open("plik.txt", "w", -1, "utf-8")
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:
- file.write("jakiś tam tekst")
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:
- file.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:
- file = open("plik.txt", "r", -1, "utf-8")
- print(file.read())
- file.close()
Metoda read może wczytywać określoną liczbę znaków, np. w taki oto sposób:
- file = open("plik.txt", "r", -1, "utf-8")
- print(file.read(2))
- file.close()
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:
- with open("plik.txt", "r", -1, "utf-8") as file:
- lines = file.readlines()
- for line in lines:
- print(line)
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:
- file = open("plik.txt", "r+", -1, "utf-8") # otwieranie do odczytu i zapisu
- print(file.read())
- file.seek(0) # ustawienie puntu odczytu i zapisu na początek pliku
- file.write("Jakiś tam tekst do zapisu")
- file.seek(0)
- print(file.read())
- file.close()
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:
- file = open("plik.txt", "r+", -1, "utf-8") # otwieranie do odczytu i zapisu
- print(file.tell())
- print(file.read())
- print(file.tell())
- file.seek(0) # ustawienie puntu odczytu i zapisu na początek pliku
- print(file.tell())
- file.write("Jakiś tam tekst do zapisu")
- print(file.tell())
- file.seek(0)
- print(file.tell())
- print(file.read())
- print(file.tell())
- file.close()

Tytuł:
Python w zadaniach. Programowanie dla młodzieży. Poziom podstawowy
Autor:
Urszula Wiejak, Adrian Wojciechowski

Tytuł:
Python i praca z danymi. Przetwarzanie, analiza, modelowanie i wizualizacja. Wydanie III
Autor:
Avinash Navlani, Armando Fandango, Ivan Idris

Tytuł:
Black Hat Python. Język Python dla hakerów i pentesterów. Wydanie II
Autor:
Justin Seitz, Tim Arnold

Tytuł:
Python z życia wzięty. Rozwiązywanie problemów za pomocą kilku linii kodu
Autor:
Lee Vaughan

Tytuł:
Python dla nastolatków. Projekty graficzne z Python Turtle
Autor:
Krzysztof Łos

Tytuł:
Python i Excel. Nowoczesne środowisko do automatyzacji i analizy danych
Autor:
Felix Zumstein

Tytuł:
Python dla testera
Autor:
Piotr Wróblewski

Tytuł:
Python 3. Projekty dla początkujących i pasjonatów
Autor:
Adam Jurkiewicz

Tytuł:
Machine learning, Python i data science. Wprowadzenie
Autor:
Andreas C. Müller, Sarah Guido

Tytuł:
Python na maturze. Rozwiązania i analiza wybranych zadań programistycznych
Autor:
Roland Zimek