В этом модуле мы разберём, как правильно открывать файлы в Python, в каких режимах это можно делать и почему важно вовремя закрывать файл. Вы узнаете про функцию open(), основные режимы ('r', 'w', 'a', 'rb' и др.), что происходит, если забыть закрыть файл, и как удобнее всего работать с файлами через контекстный менеджер with. На практике закрепим открытие текстовых и бинарных файлов, чтение и запись, а также обработку возможных ошибок. Задания идут от самых простых до более сложных ситуаций, которые встречаются в реальных проектах.
- Модуль 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: Продвинутые возможности
Самый простой способ открыть файл для чтения
Заполните пропуски так, чтобы файл «note.txt» открылся на чтение и его содержимое было выведено на экран. Используйте обычный способ без контекстного менеджера.
f = open(input1S, input2S)
print(f.read())
f.input3SЧто выведет этот код?
Посмотрите на код и выберите правильный результат его выполнения. Файл «data.txt» существует и содержит одну строку «Hello Python».
f = open("data.txt")
text = f.read()
f.close()
print(text)Найдите и исправьте две ошибки
В коде есть две проблемы, из-за которых файл либо не откроется, либо возникнет ошибка позже. Исправьте обе строки.
f = open(data.txt)data = f.read()f.close()print(f.read())Открытие файла через with
Перепишите открытие файла с помощью контекстного менеджера with. После блока with файл должен автоматически закрыться.
input1S open("prices.txt", "r") as f:
content = f.read()
print(len(content))Сопоставьте режим открытия файла и его назначение
Соедините режимы открытия файла с тем, что они позволяют делать.
Соберите корректный код чтения файла построчно
Перетащите строки в правильном порядке, чтобы файл «log.txt» был прочитан построчно и каждая строка выведена с номером. Лишние строки оставьте внизу.
with open("log.txt", "r") as f: for i, line in enumerate(f, 1): print(f"{i}: {line.strip()}")print("Готово")f.close()with open("log.txt") as f:Заполните открытие файла нужными параметрами
Перетащите токены из банка в пропуски, чтобы файл «image.png» открылся в бинарном режиме только для чтения.
with open(input1S, input2S) as img:
data = img.read()
print(len(data), "байтов прочитано")Сколько раз будет вызван close()?
Внимательно посмотрите на код. Сколько раз будет выполнен метод close() при нормальном завершении программы? Введите число.
try:
with open("temp.txt", "w") as f:
f.write("test")
f.close() # ручной вызов
print("Файл закрыт")
except:
print("Ошибка")Исправьте проблему с кодировкой
При открытии файла с русским текстом возникает UnicodeDecodeError. Исправьте строку открытия файла, указав правильную кодировку.
f = open("русский_текст.txt", "r")content = f.read()print(content)f.close()Правильный порядок безопасной работы с файлом
Расставьте строки в правильном порядке, чтобы файл открывался безопасно, записывались данные и гарантированно закрывался даже при ошибке.
data = f.read()with open("output.txt", "w") as f:except Exception as e: print("Ошибка:", e) f.write("Важные данные")try:finally: print("Файл гарантированно закрыт")