PYTHON Obsługa plików
Aby móc operować na pliku, niezależnie od tego czy chcemy odczytać z niego informacje czy coś w nim zapiać, musimy go najpierw otworzyć.
open – otwarcie pliku do przetwarzania
Składnia:
mojplik = open(nazwapliku [, metoda][, buforowanie])
Parametry wejściowe metody open to obowiązkowa nazwa pliku oraz opcjonalne: metoda dostępu do pliku oraz buforowanie.
Przykład:
Mamy dany plik tekstowy test.txt o następującej zawartości:
Pierwsza linia pliku
Pliku druga linia
Linia trzecia pliku
Ostatnia pliku linia
Otwórzmy plik do odczytu:
plik = open('test.txt', 'r')
print(plik.read())
plik.close()
W rezultacie wypisaliśmy całą zawartość pliku na ekran.
Metody dostępu do pliku
Metoda | Opis |
---|---|
r | Tylko do odczytu. Domyślna opcja |
rb | Tylko do odczytu w formacie binarnym |
r+ | Odczyt + zapis |
rb+ | Odczyt + zapis w formacie binarnym |
w | Zapis |
wb | Zapis w formacie binarnym |
w+ | Odczyt + zapis. Nadpisuje plik jeśli istnieje. Tworzy nowy plik, jeśli nie istnieje. |
wb+ | Odczyt + zapis w formacie binarnym |
a | Dopisani |
ab | Dopisanie w formacie binarnym |
a+ | Odczyt + dopisanie |
ab+ | Odczyt + dopisanie w formacie binarnym |
Metody odczytania zawartości pliku
read
Przykład:
plik = open('test.txt', 'r')
zawartosc = plik.read()
print(zawartosc)
plik.close()
Efekt – odczytana cała zawartość pliku
Pierwsza linia pliku
Pliku druga linia
Linia trzecia pliku
Ostatnia pliku linia
readline
Przykład:
plik = open('test.txt', 'r')
x = plik.readlines()
print(x)
Efekt – odczytane wszystkie linie pliku, umieszczone na liście
['Pierwsza linia pliku\n', 'Pliku druga linia\n', 'Linia trzecia pliku\n', 'Ostatnia pliku linia']
Należy zwrócić uwagę, że linie tekstu zawierają również symbol przejścia do nowej linii \n.
Zapis do pliku
r+
plik = open('test.txt', 'r+')
plik.write('Cokolwiek')
plik.close()
Efektem jest częściowo nadpisana zawartość pliku:
Cokolwiekku
Pliku druga linia
Linia trzecia pliku
Ostatnia pliku linia
Cokolwiek nadpisało pierwsze 9 znaków w pliku test.txt
a
plik = open('test.txt', 'a')
plik.write('ZZZZZ')
plik.close()
Efekt – dopisanie ZZZZZ na końcu pliku
Cokolwiekku
Pliku druga linia
Linia trzecia pliku
Ostatnia pliku liniaZZZZZ
w
plik = open('test.txt', 'w')
plik.write('AAAAA')
plik.close()
Efekt – nadpisanie całej zawartości pliku
AAAAA
Jak widzimy musimy wiedzieć w jakim celu otwieramy plik do zapisu. Wykorzystanie metody r+ powoduje nadpisywanie pliku znak po znaku od początku, metoda a, to dopisanie czegoś na końcu pliku, natomiast w tworzy niejako nowy plik, nadpisując całą zawartość.
Pozycja w pliku
Rozpoczęcie odczytu pliku rozpoczyna się od pozycji 0. Nie koniecznie musi tak być. Możemy sami przestawiać znacznik odpowiedzialny za miejsce w pliku, w którym się aktualnie znajdujemy. Dokonamy tego za pomocą metody seek.
seek – zmiana pozycji w pliku
Przykład:
plik = open('test.txt', 'r')
plik.seek(6)
print(plik.read())
plik.close()
Zawartość pliku:
Pierwsza linia pliku
Pliku druga linia
Linia trzecia pliku
Ostatnia pliku linia
Efekt wypisania wartości zwróconej przez metodę read() po przesunięciu za pomocą metody seek() o 6 pozycji:
za linia pliku
Pliku druga linia
Linia trzecia pliku
Ostatnia pliku linia
tell – sprawdzenie aktualnej pozycji w pliku
Przykład:
plik = open('test.txt', 'r')
print("Sprawdzenie pozycji nr 1:",plik.tell())
plik.seek(6)
print("Sprawdzenie pozycji nr 2:",plik.tell())
plik.read()
print("Sprawdzenie pozycji nr 2:",plik.tell())
plik.close()
Efekt:
Sprawdzenie pozycji nr 1: 0
Sprawdzenie pozycji nr 2: 6
Sprawdzenie pozycji nr 2: 85
Na starcie jesteśmy na pozycji 0. Za pomocą metody seek przesunęliśmy się o 6 pozycji dalej. Zatem efekt kolejnego sprawdzenia pozycji to 6. Po odczytaniu pozostałej części pliku docieramy na jego koniec. Znajdujemy się wówczas na pozycji 85.
Testy przypięte do lekcji | |
---|---|
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się |