1. Otwieranie i zamykanie plików
Do pracy z plikami używamy funkcji open(), która zwraca obiekt pliku. Najczęściej korzysta się z konstrukcji with, która automatycznie zamyka plik po zakończeniu pracy:
Python1 2 3with open('dane.txt', 'r', encoding='utf-8') as plik: zawartosc = plik.read() print(zawartosc)
Tryb 'r' oznacza odczyt.
Parametr encoding='utf-8' jest konieczny, jeśli pracujesz z polskimi znakami lub plikami tekstowymi o niestandardowym kodowaniu.
Najczęstsze tryby otwierania
| Tryb | Znaczenie | Użycie |
|---|---|---|
'r' | Odczyt | Otwiera plik tylko do odczytu |
'w' | Zapis | Nadpisuje plik |
'a' | Dopisywanie | Dodaje dane na końcu |
'rb' | Odczyt binarny | np. obrazy, PDF |
'wb' | Zapis binarny | zapis plików binarnych |
2. Odczyt plików tekstowych
Odczyt całego pliku
Python1 2with open('tekst.txt', 'r', encoding='utf-8') as f: zawartosc = f.read()
Odczyt linia po linii
Python1 2 3with open('tekst.txt', 'r', encoding='utf-8') as f: for linia in f: print(linia.strip())
readline() i readlines()
Python1 2 3with open('tekst.txt', 'r', encoding='utf-8') as f: pierwsza = f.readline() wszystkie = f.readlines()
readlines() zwraca listę linii — przy dużych plikach lepiej iterować po nich bezpośrednio w pętli (mniej pamięci).
3. Zapisywanie danych do pliku
Nadpisywanie zawartości
Python1 2with open('wynik.txt', 'w', encoding='utf-8') as f: f.write("Nowe dane.\n")
Dopisywanie danych
Python1 2with open('wynik.txt', 'a', encoding='utf-8') as f: f.write("Kolejna linia.\n")
Zapis wielu linii
Python1 2 3linie = ["pierwsza\n", "druga\n", "trzecia\n"] with open('wynik.txt', 'w', encoding='utf-8') as f: f.writelines(linie)
4. Praca z plikami binarnymi
Odczyt
Python1 2with open('obraz.jpg', 'rb') as f: dane = f.read()
Zapis
Python1 2with open('kopia.jpg', 'wb') as f: f.write(dane)
Pliki binarne przydają się do obsługi obrazów, dźwięków czy innych nie-tekstowych danych.
5. Moduł pathlib — nowoczesna praca ze ścieżkami
Zamiast używać „ręcznych" ścieżek jak "folder/pliki/test.txt", korzystaj z pathlib:
Python1 2 3 4 5 6from pathlib import Path sciezka = Path("folder") / "pliki" / "test.txt" with sciezka.open('r', encoding='utf-8') as f: dane = f.read()
Dzięki temu kod jest przenośny i działa na Windows, macOS i Linux bez zmian w separatorach.
6. Obsługa wyjątków przy pracy z plikami
Nigdy nie zakładaj, że plik istnieje. Stosuj try/except:
Python1 2 3 4 5 6 7try: with open('nieistnieje.txt', 'r') as f: dane = f.read() except FileNotFoundError: print("Plik nie istnieje!") except PermissionError: print("Brak uprawnień do pliku!")
7. Praktyczne przykłady
Liczenie linii w pliku
Python1 2 3with open('log.txt', 'r', encoding='utf-8') as f: liczba = sum(1 for _ in f) print(liczba)
Kopiowanie pliku binarnego
Python1 2with open('oryginal.mp3', 'rb') as src, open('kopia.mp3', 'wb') as dst: dst.write(src.read())
8. Praca z formatami danych: CSV, JSON, Pickle
CSV — dane tabelaryczne
Python1 2 3 4 5 6import csv with open('dane.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f) for wiersz in reader: print(wiersz)
JSON — dane strukturalne
Python1 2 3 4 5 6 7import json with open('config.json', 'r', encoding='utf-8') as f: dane = json.load(f) with open('config.json', 'w', encoding='utf-8') as f: json.dump(dane, f, indent=4, ensure_ascii=False)
Pickle — zapisywanie obiektów Pythona
Python1 2 3 4 5 6 7 8 9import pickle dane = {'a': 1, 'b': 2} with open('dane.pkl', 'wb') as f: pickle.dump(dane, f) with open('dane.pkl', 'rb') as f: wczytane = pickle.load(f)
9. Typowe błędy
- Brak
encoding='utf-8'– kończy się błędami kodowania przy polskich znakach. - Nadpisywanie istniejącego pliku – użycie
'w'bez zastanowienia. - Odczyt dużego pliku do pamięci – zawsze iteruj po liniach.
- Brak zamknięcia pliku – rozwiązuje to
with. - Błędne ścieżki względne – unikaj ich, używaj
Path.
10. Podsumowanie
Obsługa plików w Pythonie to nie tylko open() i read(). To cały zestaw narzędzi, który pozwala:
- bezpiecznie manipulować danymi,
- tworzyć skrypty automatyzujące raporty i logi,
- przetwarzać struktury danych (CSV, JSON, Pickle),
- i robić to w sposób zgodny z najlepszymi praktykami.
Zrozumienie różnic między trybami pracy z plikami i stosowanie with open(...) to fundament. Reszta to kwestia praktyki i dbałości o szczegóły.
Znajomość obsługi plików to fundament automatyzacji. Dowiedz się, jak wykorzystać te umiejętności do automatyzacji zadań z plikami PDF, Excel i danymi.



