Cel: po tym rozdziale będziesz umieć:
- otwierać i czytać pliki,
- zapisywać i dopisywać dane,
- używać with (bezpieczne zamykanie),
- obsługiwać błędy,
- pracować z CSV i JSON.
1) Co to jest plik i po co nam tryby?
Każdy dokument, zdjęcie czy notatka na komputerze to plik.
W Pythonie możemy go otworzyć w różnych trybach:
| Tryb | Co robi |
|---|---|
"r" | tylko czyta (domyślny) |
"w" | zapisuje – nadpisuje całość |
"a" | dopisywanie na końcu |
"b" | tryb binarny (np. obrazki) |
"r+" | czyta i zapisuje |
Przykład:
f = open("plik.txt", "r", encoding="utf-8")
zawartosc = f.read()
print(zawartosc)
f.close()
close()jest ważne – zamyka plik i zapisuje zmiany.
2) Menedżer kontekstu with – bezpieczniej i krócej
Lepszy sposób, bo plik zamyka się sam, nawet gdy wystąpi błąd.
with open("plik.txt", "r", encoding="utf-8") as f:
for linia in f:
print(linia.strip()) # strip() usuwa \n z końca
Po wyjściu z bloku with plik jest już zamknięty.
3) Czytanie danych
Trzy popularne metody:
text = f.read() # cały plik w jednym napisie
line = f.readline() # jedna linia
lines = f.readlines() # lista wszystkich linii
4) Zapis i dopisywanie
Tworzenie/ nadpisanie:
with open("wynik.txt", "w", encoding="utf-8") as f:
f.write("Pierwsza linia\n")
f.write("Druga linia\n")
Dopisywanie (nic nie kasuje):
with open("wynik.txt", "a", encoding="utf-8") as f:
f.write("Dopisuję kolejną linijkę\n")
5) Obsługa błędów
Co jeśli plik nie istnieje?
try:
with open("nie_istnieje.txt", "r", encoding="utf-8") as f:
data = f.read()
except FileNotFoundError:
print("Plik nie istnieje!")
6) Pliki CSV – zapis i odczyt tabel
CSV to zwykły tekst z danymi w wierszach i kolumnach.
import csv
# zapis
with open("dane.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["Imię", "Wiek"])
writer.writerow(["Ala", 21])
writer.writerow(["Ola", 22])
# odczyt
with open("dane.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f)
for row in reader:
print(row)
7) Pliki JSON – zapis danych w formie „słownikowej”
JSON to popularny format wymiany danych (wygląda jak Pythonowy słownik).
import json
person = {"name": "Ala", "age": 21}
# zapis
with open("osoba.json", "w", encoding="utf-8") as f:
json.dump(person, f)
# odczyt
with open("osoba.json", "r", encoding="utf-8") as f:
data = json.load(f)
print(data["name"], data["age"])
8) Mini-projekty (spróbuj sam)
A) Notatnik – dopisywanie notatek
note = input("Podaj notatkę: ")
with open("notatki.txt", "a", encoding="utf-8") as f:
f.write(note + "\n")
B) Licznik słów w pliku
with open("tekst.txt", "r", encoding="utf-8") as f:
text = f.read()
print("Liczba słów:", len(text.split()))
C) Książka adresowa (CSV)
- Program pyta o imię i numer,
- dopisuje do
kontakty.csv, - potem wyświetla całą listę kontaktów.
9) Typowe pułapki i jak ich uniknąć
| Problem | Dlaczego | Szybka naprawa |
|---|---|---|
| Nadpisanie pliku | tryb "w" kasuje zawartość | użyj "a" jeśli chcesz dopisać |
| Polskie znaki = „krzaki” | brak encoding="utf-8" | zawsze podawaj encoding |
| Plik w złym katalogu | Python szuka w bieżącym folderze | użyj pełnej ścieżki (C:/folder/plik.txt) |
10) Zadania do samodzielnego zrobienia
- Lista zakupów – zapisz każdy produkt w nowej linii pliku
lista.txt. - Policz linie – otwórz plik i podaj liczbę linii.
- Dane użytkownika do JSON – pobierz imię i wiek, zapisz do
user.json. - Średni wiek z CSV – odczytaj dane i oblicz średnią wieku.
- Dziennik uruchomień – każdorazowo dopisz bieżącą datę i godzinę (
datetime.now()) do pliku.
Co zabierasz z odcinka 8?
- Wiesz, jak otwierać, czytać, zapisywać i dopisywać pliki.
- Umiesz korzystać z with i obsługi błędów (
try/except). - Potrafisz pracować z CSV i JSON.
- Znasz pułapki: nadpisywanie, kodowanie znaków, złe ścieżki – i wiesz, jak ich unikać.

