Глава 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, без установки
Открыть практику →