Python для новичковСтроки, модули и файлыЧтение текстового файла

Чтение текстового файла

Уроки курсаЧтение текстового файла

Чтение содержимого файла методами read() и readlines()

Когда файл открыт через with open(...) as f, дескриптор f предоставляет два основных метода для извлечения текста: read() и readlines(). Они решают одну задачу — достать содержимое файла — но возвращают разные типы данных.

Метод read()

read() читает файл целиком и возвращает всё содержимое как одну строку str.

with open('data.txt', 'r', encoding='utf-8') as f:
    content = f.read()

print(content)
print(type(content))  # <class 'str'>

Если файл data.txt содержит три строки:

яблоко
банан
вишня

то переменная content после read() будет выглядеть так:

'яблоко\nбанан\nвишня\n'

Это одна строка, в которой символы \n отмечают границы строк файла. Такой результат удобен, когда нужно работать с текстом целиком — например, искать подстроку или передать весь текст куда-то дальше одним куском.

Одна особенность: после вызова read() позиция чтения смещается в конец файла. Если вызвать read() ещё раз на том же дескрипторе, вернётся пустая строка — читать уже нечего. Это не ошибка, просто нужно учитывать.

Метод readlines()

readlines() тоже читает файл целиком, но не склеивает его в одну строку, а возвращает список строк — list[str]. Каждый элемент списка соответствует одной строке файла.

with open('data.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()

print(lines)
print(type(lines))  # <class 'list'>

Результат для того же файла:

['яблоко\n', 'банан\n', 'вишня\n']

Каждый элемент включает завершающий \n — кроме последней строки, если файл не заканчивается переносом. Список удобен тогда, когда нужно работать со строками по отдельности: обращаться к конкретной по индексу, считать их количество через len(lines), фильтровать.

Когда что использовать

Выбор между read() и readlines() зависит от того, как именно вы собираетесь обрабатывать данные.

  • read() — если нужна одна строка: поиск подстроки, разбивка вручную, передача текста целиком.
  • readlines() — если сразу нужен список: индексный доступ, проверка числа строк, работа с отдельными элементами.

Оба метода загружают весь файл в память сразу. Для небольших файлов это нормально. Если файл большой — на это стоит обратить внимание, но для большинства задач начального уровня это не проблема.