Matura z informatyki · Python

Wczytywanie i zapisywanie plików w Pythonie na maturze

Wczytywanie i zapisywanie plików w Pythonie na maturze — Cognito, korepetycje online

W części praktycznej matury z informatyki wszystko zaczyna się od pliku z danymi. Jeśli ten pierwszy krok się nie uda, reszta zadania nie ma znaczenia — dlatego warto mieć go opanowany do automatu.

Umów pierwszą lekcję (60 zł) 60 minut 1:1 · Lekcja diagnostyczna: 60 zł · regularna lekcja: 119 zł / 60 min · ocena 5,0 na e-korepetycje.net

Konstrukcja with open(): wzorzec do zapamiętania

Konstrukcja with automatycznie zamyka plik, nawet gdy program przerwie działanie. Na egzaminie to standard, którego warto się trzymać.

with open('dane.txt', encoding='utf-8') as f:
    wiersze = f.readlines()
  • 'r' — odczyt (domyślnie), 'w' — zapis (nadpisuje), 'a' — dopisywanie.
  • Parametr encoding='utf-8' ratuje przed problemami z polskimi znakami.
  • Po bloku with plik jest już zamknięty — nie próbuj z niego czytać.

Czytanie wiersz po wierszu i strip()

Każdy wiersz odczytany z pliku kończy się znakiem nowej linii. Bez strip() konwersja na liczbę zwykle się nie uda albo porównanie tekstu da fałszywy wynik.

with open('dane.txt') as f:
    for wiersz in f:
        w = wiersz.strip()
        if not w:
            continue
        print(w)

Rozdzielanie danych w wierszu

Gdy w jednym wierszu jest kilka wartości, użyj split(). Domyślnie dzieli po białych znakach, ale można podać separator.

with open('osoby.txt') as f:
    for wiersz in f:
        imie, wiek, miasto = wiersz.strip().split(';')
        wiek = int(wiek)
  • split() — po spacjach i tabulatorach.
  • split(';') lub split(',') — po konkretnym separatorze.
  • Jeśli liczba pól bywa różna, przypisuj do listy zamiast do kilku zmiennych.

Konwersja typów: najczęstsze źródło błędów

Wszystko, co wczytasz z pliku, jest tekstem. Dopóki nie skonwertujesz danych, '12' + '3' da '123', a nie 15.

liczby = []
with open('dane.txt') as f:
    for w in f:
        w = w.strip()
        if w:
            liczby.append(int(w))   # float(w) dla liczb z przecinkiem

Jeśli w pliku są liczby z przecinkiem dziesiętnym, zamień przecinek na kropkę przed konwersją: float(w.replace(',', '.')).

Zapis wyników do pliku

with open('wyniki.txt', 'w', encoding='utf-8') as f:
    f.write(f'Liczba rekordow: {len(liczby)}\n')
    f.write(f'Srednia: {sum(liczby)/len(liczby):.2f}\n')
  • Nazwa pliku musi być zgodna z poleceniem — co do znaku.
  • Format liczb (np. dwa miejsca po przecinku) bywa punktowany.
  • Sprawdź plik wynikowy po zapisaniu, zanim przejdziesz do kolejnego zadania.
Lekcja diagnostyczna

Umów pierwszą lekcję (60 zł)

Pełne 60 minut 1:1. Pierwsza lekcja diagnostyczna kosztuje 60 zł za 60 minut. Płatność następuje po lekcji; nie wymagamy karty. Wybierz, jak wolisz zacząć.

Zostaw kontakt, oddzwonimy

Nie chcesz teraz wybierać godziny? Zostaw numer, ustalimy termin przez telefon.

Twój numer jest bezpieczny. Odpowiadamy w ciągu 2-4 godzin.

Najczęstsze pytania

Najczęściej przez znak nowej linii lub spację w tekście. Rozwiązaniem jest strip() przed konwersją.
Użyj split(';') na oczyszczonym wierszu, a następnie skonwertuj poszczególne pola na potrzebne typy.
Przy konstrukcji with plik zamyka się automatycznie. Bez with trzeba wywołać close() ręcznie.

Twój kod działa na przykładzie, ale nie na danych z arkusza?

Na lekcji diagnostycznej za 60 zł przejdziemy przez Twoje rozwiązanie linijka po linijce i naprawimy miejsca, w których gubią się punkty.

Umów pierwszą lekcję (60 zł)

Pierwsza lekcja diagnostyczna 60 min: 60 zł (płatność po lekcji, bez podawania karty z góry) • pierwsza lekcja diagnostyczna 60 zł / 60 min, płatność po lekcji · kolejne lekcje 119 zł / 60 min

Wróć do bloga Korepetycje z programowania w Pythonie