Открытие и закрытие файлов

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

В этом модуле мы разберём, как правильно открывать файлы в Python, в каких режимах это можно делать и почему важно вовремя закрывать файл. Вы узнаете про функцию open(), основные режимы ('r', 'w', 'a', 'rb' и др.), что происходит, если забыть закрыть файл, и как удобнее всего работать с файлами через контекстный менеджер with. На практике закрепим открытие текстовых и бинарных файлов, чтение и запись, а также обработку возможных ошибок. Задания идут от самых простых до более сложных ситуаций, которые встречаются в реальных проектах.

Список тем

Самый простой способ открыть файл для чтения

id: 40056_task1

Заполните пропуски так, чтобы файл «note.txt» открылся на чтение и его содержимое было выведено на экран. Используйте обычный способ без контекстного менеджера.

Заполните пропуски
f = open(input1S, input2S)
print(f.read())
f.input3S
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что выведет этот код?

id: 40056_task2

Посмотрите на код и выберите правильный результат его выполнения. Файл «data.txt» существует и содержит одну строку «Hello Python».

Выберите правильный вариант ответа
f = open("data.txt")
text = f.read()
f.close()
print(text)
Сообщения
Проверить
Показать подсказку

Найдите и исправьте две ошибки

id: 40056_task3

В коде есть две проблемы, из-за которых файл либо не откроется, либо возникнет ошибка позже. Исправьте обе строки.

Найдите ошибку и исправьте
f = open(data.txt)
data = f.read()
f.close()
print(f.read())
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Открытие файла через with

id: 40056_task4

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

Заполните пропуски
input1S open("prices.txt", "r") as f:
    content = f.read()
    print(len(content))
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Сопоставьте режим открытия файла и его назначение

id: 40056_task5

Соедините режимы открытия файла с тем, что они позволяют делать.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Только чтение текстового файла (по умолчанию)
Запись текстового файла, файл создаётся заново
Дозапись в конец текстового файла
Чтение и запись без удаления содержимого
Чтение бинарных данных
"w"
"r+"
"a"
"rb"
"r"
Сообщения
Проверить
Показать подсказку

Соберите корректный код чтения файла построчно

id: 40056_task6

Перетащите строки в правильном порядке, чтобы файл «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:
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Заполните открытие файла нужными параметрами

id: 40056_task7

Перетащите токены из банка в пропуски, чтобы файл «image.png» открылся в бинарном режиме только для чтения.

Нужно правильно расставить в пропуски предложенные варианты
with open(input1S, input2S) as img:
    data = img.read()
    print(len(data), "байтов прочитано")
"image.png"
"rb"
"w"
"image.jpg"
"r"
"wb"
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Сколько раз будет вызван close()?

id: 40056_task8

Внимательно посмотрите на код. Сколько раз будет выполнен метод close() при нормальном завершении программы? Введите число.

Что должно получиться?
try:
    with open("temp.txt", "w") as f:
        f.write("test")
        f.close()        # ручной вызов
    print("Файл закрыт")
except:
    print("Ошибка")
Сообщения
Проверить
Показать подсказку

Исправьте проблему с кодировкой

id: 40056_task9

При открытии файла с русским текстом возникает UnicodeDecodeError. Исправьте строку открытия файла, указав правильную кодировку.

Найдите ошибку и исправьте
f = open("русский_текст.txt", "r")
content = f.read()
print(content)
f.close()
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

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

id: 40056_task10

Расставьте строки в правильном порядке, чтобы файл открывался безопасно, записывались данные и гарантированно закрывался даже при ошибке.

Расставьте строки в правильном порядке
data = f.read()
with open("output.txt", "w") as f:
except Exception as e:
    print("Ошибка:", e)
    f.write("Важные данные")
try:
finally:
    print("Файл гарантированно закрыт")
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру