Глава 15 · Python и файлы
Строка за строкой
Часто удобнее обработать файл по одной строке за раз, а не целиком.
Читать весь файл сразу одним куском не всегда удобно — особенно если файл большой. Часто нужнее обработать его построчно:
stroka_za_strokoj.py
with open("spisok.txt", "r", encoding="utf-8") as file:
for line in file:
print(line.strip())
Что именно убирает strip()
Каждая строка файла, кроме, возможно, последней, заканчивается невидимым символом перевода строки
\n. Но .strip() (глава 8) убирает все пробельные символы по обеим сторонам строки — пробелы, табуляции и переносы строк, — а не только этот один перевод строки. Если данные в файле могут осмысленно начинаться или заканчиваться пробелом, слепой .strip() может незаметно испортить их. Если цель — убрать именно завершающий перевод строки и ничего больше, используйте line.rstrip("\\n").Debug Lab 1: strip() убирает больше, чем кажется
citaty.py
with open("citaty.txt", "w", encoding="utf-8") as file:
file.write(" важная цитата с пробелами по краям \n")
with open("citaty.txt", "r", encoding="utf-8") as file:
for line in file:
print(f"[{line.strip()}]")
[важная цитата с пробелами по краям]
Программа вывела цитату без ведущих и завершающих пробелов — хотя автор специально их поставил. .strip() убирает пробелы по краям вместе с переводом строки, и не различает «случайный мусор» и «намеренный пробел»: она просто убирает всё пробельное по обоим концам строки.
Исправленный код
citaty_fixed.py
with open("citaty.txt", "r", encoding="utf-8") as file:
for line in file:
print(f"[{line.rstrip(chr(10))}]") # убираем только перевод строки
Все строки сразу — списком
readlines.py
with open("spisok.txt", "r", encoding="utf-8") as file:
lines = file.readlines()
print(len(lines), "строк")
print(lines[0]) # первая строка — вместе со своим \n
Символы переноса строки — не только \n
В Python текстовые файлы читаются в режиме универсальных переносов строк: даже если на диске строки разделены последовательностью
\r\n (так исторически принято в Windows), при чтении в текстовом режиме Python отдаёт вам \n. Подробно про текстовый и бинарный режимы — в 15.17.Практика: построчное чтение файлов
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки