Чтение и запись текстовых файлов
Чтение и запись текстовых файлов в Python: методы read(), readline(), readlines(), write(), writelines().
Файловый объект предоставляет несколько методов чтения. Выбор зависит от размера файла и от того, нужны ли все строки сразу или только по одной.
Методы чтения
Метод | Возвращает | Когда использовать |
| всю строку целиком | небольшие файлы |
| одну строку | пошаговая обработка |
| список всех строк | нужен доступ по индексу |
read() — весь файл сразу
with open("poem.txt", "w", encoding="utf-8") as f:
f.write("Строка первая\nСтрока вторая\nСтрока третья\n")
with open("poem.txt", "r", encoding="utf-8") as f:
text = f.read()
print(text)
print("Символов:", len(text))
Вывод:
Строка первая Строка вторая Строка третья Символов: 44
readlines() — список строк
with open("poem.txt", "r", encoding="utf-8") as f:
lines = f.readlines() # ['Строка первая\n', 'Строка вторая\n', ...]
for i, line in enumerate(lines, 1):
print(f"{i}: {line.strip()}")
Вывод:
1: Строка первая 2: Строка вторая 3: Строка третья
Метод
strip()убирает символ новой строки\nпо краям — без него в выводе появились бы лишние пустые строки.
Перебор файла как итерируемого объекта
Самый эффективный способ читать построчно — итерировать файловый объект напрямую. Python не загружает весь файл в память:
with open("poem.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip())
Вывод:
Строка первая Строка вторая Строка третья
write() и writelines()
lines = ["Яблоко\n", "Банан\n", "Вишня\n"]
with open("fruits.txt", "w", encoding="utf-8") as f:
f.writelines(lines) # записывает список без join
with open("fruits.txt", "r", encoding="utf-8") as f:
print(f.read())
Вывод:
Яблоко Банан Вишня
write()принимает строку;writelines()— список строк. Ни тот ни другой не добавляют перевод строки автоматически — включайте\nсами.
Коротко
read()— весь файл одной строкой;readlines()— список строк; итерация по файлу — построчно без загрузки в память.- Убирайте
\nметодомstrip()при обработке строк. write(s)пишет строку;writelines(list)— список строк (без авто-\n).- Для больших файлов итерируйте файловый объект напрямую — это экономит память.
Проверьте себя
1. Какой метод возвращает всё содержимое файла одной строкой?
Areadlines()
Breadline()
Cread()
Dreadall()
2. Зачем вызывать strip() при построчном чтении файла?
AЧтобы разбить строку на слова
BЧтобы перевести строку в нижний регистр
CЧтобы убрать пробелы и символ \n в конце строки
Dstrip() не нужен при работе с файлами
3. Что добавляет writelines() между элементами списка при записи?
AНичего не добавляет
BЗапятую
CПробел
DПеренос строки
Курс по теме
Пройдите курс «Python с нуля» — по шагам, с проверкой
8 уроков · ~14 ч · теория, упражнения и экзамен с бейджем