BLOK 11 · 2 godz. Pliki CSV I/O

Praca z plikami tekstowymi i CSV

Informatyka Rozszerzona · Klasa 4 · Semestr I · Blok 11/30

1. Otwieranie i zamykanie plików

W Pythonie pliki obsługuje się najbezpieczniej konstrukcją with open(...), która automatycznie zamyka plik nawet jeśli wystąpi błąd w trakcie jego przetwarzania.

with open("dane.txt", "r", encoding="utf-8") as plik: for linia in plik: print(linia.strip()) # .strip() usuwa znak nowej linii # zapis do pliku with open("wynik.txt", "w", encoding="utf-8") as plik: plik.write("Pierwsza linia\n") plik.write("Druga linia\n")
TrybZnaczenie
"r"Odczyt (błąd, jeśli plik nie istnieje)
"w"Zapis — nadpisuje cały plik od początku
"a"Dopisywanie na końcu istniejącego pliku

2. Plik CSV — dane tabelaryczne

Moduł csv ułatwia odczyt i zapis danych w formacie tabelarycznym (wartości rozdzielone przecinkiem). DictReader pozwala odwoływać się do kolumn po nazwie zamiast po numerze indeksu.

import csv # odczyt: uczniowie.csv zawiera kolumny: imie,nazwisko,ocena with open("uczniowie.csv", newline="", encoding="utf-8") as plik: czytnik = csv.DictReader(plik) for wiersz in czytnik: print(wiersz["imie"], wiersz["ocena"]) # zapis with open("wyniki.csv", "w", newline="", encoding="utf-8") as plik: pisarz = csv.DictWriter(plik, fieldnames=["imie", "srednia"]) pisarz.writeheader() pisarz.writerow({"imie": "Anna", "srednia": 4.5})

Typowy błąd maturalny

Dane odczytane z pliku (również z CSV) są zawsze tekstem (str), nawet jeśli wyglądają jak liczby! Trzeba je jawnie skonwertować: int(wiersz["ocena"]) lub float(...), zanim wykonamy na nich obliczenia.

3. Ćwiczenia praktyczne

Ćwiczenie 1 — średnia z pliku

Mając plik oceny.txt, gdzie każda linia zawiera jedną ocenę (liczbę), wczytaj wszystkie oceny, oblicz średnią arytmetyczną i zapisz wynik do nowego pliku srednia.txt.

with open("oceny.txt") as plik: oceny = [float(linia.strip()) for linia in plik] srednia = sum(oceny) / len(oceny) with open("srednia.txt", "w") as plik: plik.write(f"Średnia: {srednia:.2f}")

Ćwiczenie 2 — filtrowanie CSV

Wczytaj plik uczniowie.csv i zapisz do nowego pliku najlepsi.csv tylko tych uczniów, których średnia jest wyższa niż 4.5.

Sprawdź wiedzę

1. Która konstrukcja gwarantuje automatyczne zamknięcie pliku, nawet przy błędzie?

2. Jakiego typu są dane odczytane z pliku tekstowego lub CSV?

3. Jaki tryb otwarcia pliku dopisuje dane na końcu, nie kasując istniejącej zawartości?

Podsumowanie bloku