В этом модуле мы изучим контекстный менеджер with в Python. Это современный и безопасный способ работы с файлами, который гарантирует правильное закрытие файла даже в случае возникновения ошибок. Вы узнаете, как использовать конструкцию with open(...) as ..., разберетесь с режимами доступа к файлам ('r', 'w', 'a') и научитесь читать и записывать данные, используя лучшие практики программирования. Задания построены от простых определений к написанию и анализу рабочего кода.
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Модуль 14: Работа с файлами
- Открытие и закрытие файлов.
- Чтение файлов.
- Запись в файлы.
- Контекстный менеджер with.
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
Режимы открытия файла
При работе с файлами важно правильно выбирать режим доступа. Сопоставьте обозначение режима с его описанием.
'r''w''a''r+'Ручное управление vs Context Manager
Распределите характеристики между классическим подходом (try-finally) и использованием контекстного менеджера `with`.
Синтаксис конструкции with
Заполните пропуски, чтобы корректно открыть файл `log.txt` для добавления записей и записать в него строку. Обратите внимание на ключевые слова и методы.
input1S open('log.txt', 'a') input2S log_file:
log_file.input3S("New entry\n")Исправьте ошибки в блоке with
В данном коде есть две ошибки: одна синтаксическая в объявлении, другая связана с правилами оформления блоков кода в Python. Найдите и исправьте их.
with open('data.txt', 'r') as filecontent = file.read()print(content)Запись списка в файл
Соберите код, который открывает файл `names.txt` для записи и сохраняет туда каждое имя из списка `users` с новой строки. Будьте внимательны: одна строка в наборе лишняя (использует устаревший метод).
file.write(name + '\n')users = ['Alice', 'Bob', 'Charlie']with open('names.txt', 'w') as file: for name in users:file.close()Обработка строк при чтении
Допишите код, который читает файл построчно и удаляет лишние пробельные символы (например, перенос строки) в конце каждой строки перед выводом. Используйте элементы из банка.
with open('poem.txt', 'r') as f:
input1S line in input2S:
print(line.input3S())Состояние файла после выхода из блока
Проанализируйте код. Мы открываем файл, читаем его, а затем проверяем атрибут `closed` вне блока `with`. Что выведет последний print?
with open('example.txt', 'w') as my_file:
my_file.write('Test')
print(my_file.closed)Копирование содержимого файла
Восстановите логическую последовательность кода для копирования данных из `source.txt` в `backup.txt`. Мы читаем всё содержимое исходного файла и записываем его в целевой.
content = src.read()with open('source.txt', 'r') as src: with open('backup.txt', 'w') as dst: dst.write(content)Что выведет код?
Определите, что будет выведено на экран после выполнения кода. Код создает файл, записывает в него две строки, а затем читает его содержимое.
with open('test.txt', 'w') as f:
f.write("Hello")
f.write("World")
with open('test.txt', 'r') as f:
print(f.read())