0Pricing
Python Academy · Lekcja

Instrukcja with w pracy z plikami

Proszę zapewnić automatyczne zamykanie plików za pomocą menedżerów kontekstu.

Instrukcja with w pracy z plikami to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Wprowadzenie

Instrukcja with zapewnia automatyczne zamknięcie plików, nawet jeśli wystąpi wyjątek.

Instrukcja with

with open('file.txt') as f: ... automatycznie zamyka f po zakończeniu bloku, niezależnie od tego, czy blok zakończył się normalnie, czy w wyniku wyjątku.
# with open('data.txt') as f:
#     content = f.read()
# f is now closed
print('with demo')

Dlaczego with jest lepsze niż try/finally

Bez with należy napisać try: ... finally: f.close(), aby zagwarantować zamknięcie pliku. with obsługuje to automatycznie.
# Equivalent to:
# f = open('file.txt')
# try:
#     content = f.read()
# finally:
#     f.close()
print('comparison demo')

Wiele plików

with open('a.txt') as a, open('b.txt') as b: otwiera dwa pliki w jednej instrukcji.
# with open('in.txt') as src, open('out.txt','w') as dst:
#     for line in src:
#         dst.write(line.upper())
print('multi-file demo')

Protokół menedżera kontekstu

with korzysta z __enter__ i __exit__. open() zwraca obiekt pliku, który implementuje te metody. Później napiszemy własny menedżer.
# f.__enter__() opens
# f.__exit__() closes
print('protocol demo')

Odczyt i przetwarzanie

Połącz with, for line in f: i .strip(), aby wygodnie przetwarzać wiersze: usuwać znaki nowego wiersza i pomijać puste wiersze.
lines = ['  hello  \n', '  world  \n']
cleaned = [l.strip() for l in lines if l.strip()]
print(cleaned)

Zapisywanie za pomocą with

with open('out.txt','w') as f: f.write('data') — po opuszczeniu bloku plik zostaje opróżniony i zamknięty.
# with open('out.txt', 'w') as f:
#     for i in range(10):
#         f.write(f'{i}\n')
print('write with demo')

Sprawdzanie, czy plik istnieje

import os; os.path.exists('file.txt') zwraca True, jeśli plik istnieje. Pozwala uniknąć błędu FileNotFoundError.
import os
print(os.path.exists('/tmp'))
print(os.path.exists('/nonexistent'))

Błędy open()

FileNotFoundError: plik nie istnieje. PermissionError: brak uprawnień do odczytu lub zapisu. W celu zapewnienia niezawodnej obsługi należy użyć try/except.
try:
    with open('/nonexistent.txt') as f:
        pass
except FileNotFoundError as e:
    print('File not found:', e)

StringIO dla plików w pamięci

from io import StringIO umożliwia używanie ciągu znaków jako obiektu pliku — świetnie sprawdza się podczas testowania kodu przetwarzającego pliki.
from io import StringIO
buf = StringIO('line1\nline2\n')
for line in buf:
    print(line.rstrip())

Moduł tempfile

tempfile.NamedTemporaryFile() tworzy plik tymczasowy, który jest usuwany przy zamknięciu. Jest to bezpieczne rozwiązanie do przetwarzania danych przejściowych.
import tempfile
with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=True) as f:
    f.write('temp data')
    print(f.name)

Szybkie sprawdzenie

Co gwarantuje instrukcja with użyta podczas operacji wejścia-wyjścia na plikach?

Podsumowanie

with open(f) as h: automatycznie zamyka h. W przypadku wielu plików należy użyć wielu celów. StringIO służy do testowania danych w pamięci. Błąd FileNotFoundError należy obsługiwać w kontrolowany sposób.

Kontynuuj naukę

Świetna praca! Przejdź do następnej lekcji, aby kontynuować naukę.

Często zadawane pytania

Czy lekcja „Instrukcja with w pracy z plikami” jest bezpłatna?

Tak — pełny tekst „Instrukcja with w pracy z plikami” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Instrukcja with w pracy z plikami”?

Proszę zapewnić automatyczne zamykanie plików za pomocą menedżerów kontekstu. Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Instrukcja with w pracy z plikami”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Otwieranie i odczytywanie plików
  2. Zapisywanie i dopisywanie do plików
  3. Instrukcja with w pracy z plikami
  4. Praca ze ścieżkami plików za pomocą pathlib
← Powrót do Python Academy