В этом модуле мы переходим от чтения данных к их сохранению. Вы научитесь создавать новые файлы и записывать в них информацию, используя язык программирования Python. Мы разберем основные режимы открытия файлов: 'w' (запись с перезаписью) и 'a' (добавление в конец). Вы узнаете, в чем разница между методами .write() и .writelines(), и почему так важно закрывать файлы или использовать контекстный менеджер with.
Задания расположены от простого к сложному: начнем с выбора правильного режима, затем перейдем к синтаксису записи, работе с контекстным менеджером и разбору нюансов, таких как перенос строк и кодировки. Будьте внимательны: режим 'w' беспощаден к старым данным!
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Модуль 14: Работа с файлами
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
Открытие файла для записи
Чтобы записать данные в файл, его нужно открыть в соответствующем режиме. Допишите код так, чтобы файл notes.txt открылся для записи (если файл существует, он должен быть перезаписан). Затем запишите в него строку "Python".
# Открываем файл для записи
file = open('notes.txt', input1S)
# Записываем данные
file.write(input2S)
# Закрываем файл
file.close()Режимы доступа к файлам
В Python поведение функции open() сильно зависит от выбранного режима. Сопоставьте обозначение режима с его описанием.
'r''w''a'Осторожно: режим 'w'
Представьте, что файл 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
Использование конструкции with — лучший способ работы с файлами, так как она гарантирует закрытие файла даже при возникновении ошибок. Соберите код, который открывает файл history.txt для добавления данных и записывает туда строку.
input1S open('history.txt', input2S) input3S f:
f.write('New Event')Типы данных при записи
Метод .write() принимает только строки. В приведенном коде есть ошибка: попытка записать число напрямую. Найдите строку с ошибкой и исправьте её, приведя число к строке.
with open('scores.txt', 'w') as f: score = 100 f.write(score)Как работает writelines?
Метод writelines() записывает список строк, но есть нюанс. Посмотрите на код и напишите, что в точности окажется внутри файла list.txt. Не добавляйте лишние пробелы или кавычки, пишите только содержимое файла.
items = ['Apple', 'Banana', 'Cherry']
with open('list.txt', 'w') as f:
f.writelines(items)Запись списка с новой строки
Соберите код, который записывает имена пользователей в файл, каждое имя — с новой строки. Обратите внимание на правильное использование символа переноса строки и указание кодировки.
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:Форматирование отчета
Восстановите порядок строк, чтобы создать файл 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Ведение лога событий
Напишите программу для логгирования. Файл app.log уже существует и содержит записи. Вам нужно открыть его так, чтобы не удалить старые данные, и записать новую строку "User logged in" с переносом строки в конце.
# Открываем для добавления
with open('app.log', input1S) as f:
f.write(input2S)