Obsługa plików w Pythonie - czytanie i zapisywanie danych

Kacper Sieradziński
Kacper Sieradziński
27 lutego 2025Edukacja3 min czytania

Często programując w Pythonie, musisz pracować z danymi przechowywanymi w plikach — logach, raportach, konfiguracjach czy zapisach użytkowników. Umiejętność czytania, zapisywania i bezpiecznego przetwarzania plików to jedna z najważniejszych kompetencji programisty. W tym poradniku poznasz wszystko, co musisz wiedzieć o obsłudze plików w Pythonie – od podstaw po bardziej zaawansowane techniki.

Obraz główny Obsługa plików w Pythonie - czytanie i zapisywanie danych

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:

Python
1 2 3 with 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

TrybZnaczenieUżycie
'r'OdczytOtwiera plik tylko do odczytu
'w'ZapisNadpisuje plik
'a'DopisywanieDodaje dane na końcu
'rb'Odczyt binarnynp. obrazy, PDF
'wb'Zapis binarnyzapis plików binarnych

2. Odczyt plików tekstowych

Odczyt całego pliku

Python
1 2 with open('tekst.txt', 'r', encoding='utf-8') as f: zawartosc = f.read()

Odczyt linia po linii

Python
1 2 3 with open('tekst.txt', 'r', encoding='utf-8') as f: for linia in f: print(linia.strip())

readline() i readlines()

Python
1 2 3 with 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

Python
1 2 with open('wynik.txt', 'w', encoding='utf-8') as f: f.write("Nowe dane.\n")

Dopisywanie danych

Python
1 2 with open('wynik.txt', 'a', encoding='utf-8') as f: f.write("Kolejna linia.\n")

Zapis wielu linii

Python
1 2 3 linie = ["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

Python
1 2 with open('obraz.jpg', 'rb') as f: dane = f.read()

Zapis

Python
1 2 with 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:

Python
1 2 3 4 5 6 from 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:

Python
1 2 3 4 5 6 7 try: 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

Python
1 2 3 with open('log.txt', 'r', encoding='utf-8') as f: liczba = sum(1 for _ in f) print(liczba)

Kopiowanie pliku binarnego

Python
1 2 with 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

Python
1 2 3 4 5 6 import csv with open('dane.csv', 'r', encoding='utf-8') as f: reader = csv.reader(f) for wiersz in reader: print(wiersz)

JSON — dane strukturalne

Python
1 2 3 4 5 6 7 import 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

Python
1 2 3 4 5 6 7 8 9 import 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

  1. Brak encoding='utf-8' – kończy się błędami kodowania przy polskich znakach.
  2. Nadpisywanie istniejącego pliku – użycie 'w' bez zastanowienia.
  3. Odczyt dużego pliku do pamięci – zawsze iteruj po liniach.
  4. Brak zamknięcia pliku – rozwiązuje to with.
  5. Błędne ścieżki względne – unikaj ich, używaj Path.

10. Podsumowanie

Obsługa plików w Pythonie to nie tylko open()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.

Tagi

#Python#Nauka programowania#Podstawy