Запись в файлы

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

Тренажер по Python

В этом модуле мы переходим от чтения данных к их сохранению. Вы научитесь создавать новые файлы и записывать в них информацию, используя язык программирования Python. Мы разберем основные режимы открытия файлов: 'w' (запись с перезаписью) и 'a' (добавление в конец). Вы узнаете, в чем разница между методами .write() и .writelines(), и почему так важно закрывать файлы или использовать контекстный менеджер with.

Задания расположены от простого к сложному: начнем с выбора правильного режима, затем перейдем к синтаксису записи, работе с контекстным менеджером и разбору нюансов, таких как перенос строк и кодировки. Будьте внимательны: режим 'w' беспощаден к старым данным!

Список тем

Открытие файла для записи

id: 40058_task1

Чтобы записать данные в файл, его нужно открыть в соответствующем режиме. Допишите код так, чтобы файл notes.txt открылся для записи (если файл существует, он должен быть перезаписан). Затем запишите в него строку "Python".

Заполните пропуски
# Открываем файл для записи
file = open('notes.txt', input1S)

# Записываем данные
file.write(input2S)

# Закрываем файл
file.close()
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Режимы доступа к файлам

id: 40058_task2

В Python поведение функции open() сильно зависит от выбранного режима. Сопоставьте обозначение режима с его описанием.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Открывает для записи, предварительно удаляя старое содержимое файла
Открывает для записи, добавляя данные в конец файла
Открывает только для чтения (ошибка, если файла нет)
'r'
'w'
'a'
Сообщения
Проверить
Показать подсказку

Осторожно: режим 'w'

id: 40058_task3

Представьте, что файл log.txt изначально был пуст. Проанализируйте код и выберите, что будет содержаться в файле после выполнения скрипта. Обратите внимание на повторное открытие файла.

Выберите правильный вариант ответа
# Запись первой порции данных
f = open('log.txt', 'w')
f.write('Error 404')
f.close()

# Запись второй порции данных
f = open('log.txt', 'w')
f.write('System OK')
f.close()
Сообщения
Проверить
Показать подсказку

Безопасная запись с Context Manager

id: 40058_task4

Использование конструкции with — лучший способ работы с файлами, так как она гарантирует закрытие файла даже при возникновении ошибок. Соберите код, который открывает файл history.txt для добавления данных и записывает туда строку.

Нужно правильно расставить в пропуски предложенные варианты
input1S open('history.txt', input2S) input3S f:
    f.write('New Event')
'w'
'a'
with
as
close
in
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Типы данных при записи

id: 40058_task5

Метод .write() принимает только строки. В приведенном коде есть ошибка: попытка записать число напрямую. Найдите строку с ошибкой и исправьте её, приведя число к строке.

Найдите ошибку и исправьте
with open('scores.txt', 'w') as f:
    score = 100
    f.write(score)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Как работает writelines?

id: 40058_task6

Метод writelines() записывает список строк, но есть нюанс. Посмотрите на код и напишите, что в точности окажется внутри файла list.txt. Не добавляйте лишние пробелы или кавычки, пишите только содержимое файла.

Что должно получиться?
items = ['Apple', 'Banana', 'Cherry']
with open('list.txt', 'w') as f:
    f.writelines(items)
Сообщения
Проверить
Показать подсказку

Запись списка с новой строки

id: 40058_task7

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

Перетяните в правильном порядке строки из одного блока в другой
with open('users.txt', 'w', encoding='utf-8') as f:
    users = ['Alice', 'Bob', 'Charlie']
    for user in users:
        f.write(user + '\n')
f.write(user)
with open('users.txt', 'r') as f:
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Форматирование отчета

id: 40058_task8

Восстановите порядок строк, чтобы создать файл report.txt и записать в него заголовок, пустую строку-разделитель и итоговую сумму. Переменная total уже равна 500.

Расставьте строки в правильном порядке
f.write('Monthly Report\n')
    f.write('\n')
with open('report.txt', 'w') as f:
    f.write(f'Total: {total}')
total = 500
Сообщения
Проверить
Показать подсказку

Ведение лога событий

id: 40058_task9

Напишите программу для логгирования. Файл app.log уже существует и содержит записи. Вам нужно открыть его так, чтобы не удалить старые данные, и записать новую строку "User logged in" с переносом строки в конце.

Заполните пропуски
# Открываем для добавления
with open('app.log', input1S) as f:
    f.write(input2S)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру