0Pricing
Python Academy · Урок

Использование оператора with для работы с файлами

Обеспечивайте автоматическое закрытие файлов с помощью менеджеров контекста.

«Использование оператора with для работы с файлами» — бесплатный урок Python Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.

Введение

Инструкция with гарантирует автоматическое закрытие файлов, даже если происходит исключение.

Инструкция with

with open('file.txt') as f: ... автоматически закрывает f при выходе из блока — как при обычном завершении, так и при возникновении исключения.
# with open('data.txt') as f:
#     content = f.read()
# f is now closed
print('with demo')

Почему with лучше, чем try/finally

Без with Вам пришлось бы написать try: ... finally: f.close(), чтобы гарантировать закрытие. with делает это автоматически.
# Equivalent to:
# f = open('file.txt')
# try:
#     content = f.read()
# finally:
#     f.close()
print('comparison demo')

Несколько файлов

with open('a.txt') as a, open('b.txt') as b: открывает два файла в одной инструкции.
# with open('in.txt') as src, open('out.txt','w') as dst:
#     for line in src:
#         dst.write(line.upper())
print('multi-file demo')

Протокол контекстного менеджера

with использует __enter__ и __exit__. open() возвращает файловый объект, который реализует эти методы. Позже Вы напишете собственный контекстный менеджер.
# f.__enter__() opens
# f.__exit__() closes
print('protocol demo')

Чтение и обработка

Объедините with, for line in f: и .strip() для аккуратной обработки строк: удаляйте переносы строк и пропускайте пустые строки.
lines = ['  hello  \n', '  world  \n']
cleaned = [l.strip() for l in lines if l.strip()]
print(cleaned)

Запись с помощью with

with open('out.txt','w') as f: f.write('data') — при выходе из блока файл сбрасывается и закрывается.
# with open('out.txt', 'w') as f:
#     for i in range(10):
#         f.write(f'{i}\n')
print('write with demo')

Проверка существования файла

import os; os.path.exists('file.txt') возвращает True, если файл существует. Это помогает предотвратить FileNotFoundError.
import os
print(os.path.exists('/tmp'))
print(os.path.exists('/nonexistent'))

Ошибки open()

FileNotFoundError: файл не существует. PermissionError: нет прав на чтение или запись. Для надёжной обработки оберните код в try/except.
try:
    with open('/nonexistent.txt') as f:
        pass
except FileNotFoundError as e:
    print('File not found:', e)

StringIO для файлов в памяти

from io import StringIO позволяет использовать строку как файловый объект — это особенно удобно для тестирования кода обработки файлов.
from io import StringIO
buf = StringIO('line1\nline2\n')
for line in buf:
    print(line.rstrip())

Модуль tempfile

tempfile.NamedTemporaryFile() создаёт временный файл, который удаляется при закрытии. Это безопасно для обработки временных данных.
import tempfile
with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=True) as f:
    f.write('temp data')
    print(f.name)

Быстрая проверка

Что гарантирует инструкция with при использовании с файловым вводом-выводом?

Итоги

with open(f) as h: автоматически закрывает h. Используйте несколько целевых объектов для нескольких файлов. StringIO подходит для тестирования в памяти. Корректно обрабатывайте FileNotFoundError.

Продолжайте обучение

Отличная работа! Перейдите к следующему уроку, чтобы продолжить обучение.

Часто задаваемые вопросы

Урок «Использование оператора with для работы с файлами» бесплатный?

Да — полный текст урока «Использование оператора with для работы с файлами» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.

Чему я научусь в уроке «Использование оператора with для работы с файлами»?

Обеспечивайте автоматическое закрытие файлов с помощью менеджеров контекста. Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Python Academy?

Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Использование оператора with для работы с файлами»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Python Academy?

Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Открытие и чтение файлов
  2. Запись и добавление данных в файлы
  3. Использование оператора with для работы с файлами
  4. Работа с путями файлов с помощью pathlib
← Назад к Python Academy