Odcinek 8/15 – Operacje na plikach w Pythonie

foto kurs pythona odcinek 7

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:

TrybCo 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ąć

ProblemDlaczegoSzybka naprawa
Nadpisanie plikutryb "w" kasuje zawartośćużyj "a" jeśli chcesz dopisać
Polskie znaki = „krzaki”brak encoding="utf-8"zawsze podawaj encoding
Plik w złym kataloguPython szuka w bieżącym folderzeużyj pełnej ścieżki (C:/folder/plik.txt)

10) Zadania do samodzielnego zrobienia

  1. Lista zakupów – zapisz każdy produkt w nowej linii pliku lista.txt.
  2. Policz linie – otwórz plik i podaj liczbę linii.
  3. Dane użytkownika do JSON – pobierz imię i wiek, zapisz do user.json.
  4. Średni wiek z CSV – odczytaj dane i oblicz średnią wieku.
  5. 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ć.