Twoje Centrum Szkoleniowe

Nauczmy się dziś czegoś nowego!

Kurs programowania - Python

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ę
Aby widzieć ocenę lekcji - Zaloguj się