Чтение файлов: read(), readline(), readlines()

Чтение файлов: read(), readline(), readlines() Работа с файлами

Привет! Мы уже научились открывать файлы с помощью open() и with. Теперь пришло время узнать, как читать данные из файлов. В Python есть три основных метода для этого: read()readline() и readlines().

В этой статье мы разберём:

  • read() — чтение всего файла
  • readline() — чтение по одной строке
  • readlines() — чтение в список строк
  • Какой метод когда использовать

Что нужно знать перед началом

Для этого урока тебе понадобится:

  • Установленный Python
  • Базовое понимание работы с файлами (статьи 1–3 в этом подменю)

Совет: Выбор метода зависит от размера файла и того, как ты планируешь обрабатывать данные.

Основная часть

Метод read()

read() читает весь файл целиком и возвращает строку.

with open("file.txt", "r", encoding="utf-8") as file:
    content = file.read()
    print(content)

Совет: read() удобен для небольших файлов, которые полностью помещаются в память.

# Чтение N символов
with open("file.txt", "r") as file:
    first_10 = file.read(10)   # Читаем первые 10 символов
    rest = file.read()         # Читаем всё остальное

Метод readline()

readline() читает одну строку из файла.

with open("file.txt", "r", encoding="utf-8") as file:
    line1 = file.readline()
    line2 = file.readline()
    print(line1, line2)

Совет: readline() удобен для построчного чтения больших файлов.

with open("file.txt", "r") as file:
    while True:
        line = file.readline()
        if not line:
            break
        print(line.strip())

Метод readlines()

readlines() читает все строки и возвращает список строк.

with open("file.txt", "r", encoding="utf-8") as file:
    lines = file.readlines()
    for line in lines:
        print(line.strip())

Совет: readlines() удобен, когда нужно обработать все строки, но они помещаются в память.

with open("file.txt", "r") as file:
    lines = file.readlines()
    print(lines)   # ['Line1\n', 'Line2\n', 'Line3\n']

Итерация по файлу (простой способ)

Python позволяет итерировать по файлу напрямую.

with open("file.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(line.strip())

Совет: Это самый эффективный способ для построчного чтения больших файлов — не загружает весь файл в память.

Сравнение методов

МетодЧитаетВозвращаетКогда использовать
read()Весь файлСтрокаМаленькие файлы
readline()Одну строкуСтрокаБольшие файлы по одной строке
readlines()Все строкиСписок строкФайлы, помещающиеся в память
for line in fileПо одной строкеИтераторСамый эффективный

Чтение больших файлов

Для очень больших файлов (логи, данные) используй построчное чтение.

def process_large_file(filename):
    with open(filename, "r", encoding="utf-8") as file:
        for line in file:
            # Обработка строки без загрузки всего файла в память
            process_line(line)

Чтение с обработкой ошибок

def safe_read_all(filename, encoding="utf-8"):
    try:
        with open(filename, "r", encoding=encoding) as file:
            return file.read()
    except FileNotFoundError:
        return None
    except UnicodeDecodeError:
        return None

Примеры из реальной жизни

Пример 1. Чтение конфигурационного файла:

with open("config.txt", "r", encoding="utf-8") as file:
    config = {}
    for line in file:
        if "=" in line and not line.startswith("#"):
            key, value = line.strip().split("=", 1)
            config[key] = value
    print(config)

Пример 2. Анализ логов:

error_count = 0
with open("log.txt", "r") as file:
    for line in file:
        if "ERROR" in line:
            error_count += 1
print(f"Найдено {error_count} ошибок")

Пример 3. Чтение CSV-файла:

data = []
with open("data.csv", "r", encoding="utf-8") as file:
    for line in file:
        row = line.strip().split(",")
        data.append(row)
print(data)

Задачи для закрепления

Задача 1. Прочитай весь файл data.txt и выведи его содержимое с помощью read().

Задача 2. Прочитай файл data.txt построчно с помощью for line in file.

Задача 3. Прочитай файл data.txt в список строк с помощью readlines() и выведи третью строку.

Задача 4. Напиши функцию, которая читает файл и возвращает количество строк в нём.

Задача 5. В чём разница между readlines() и циклом for line in file?

Ответы:

Задача 1.

with open("data.txt", "r") as file:
    content = file.read()
    print(content)

Задача 2.

with open("data.txt", "r") as file:
    for line in file:
        print(line.strip())

Задача 3.

with open("data.txt", "r") as file:
    lines = file.readlines()
    if len(lines) >= 3:
        print(lines[2].strip())

Задача 4.

def count_lines(filename):
    with open(filename, "r") as file:
        return len(file.readlines())

# Или эффективно для больших файлов:
def count_lines_effective(filename):
    count = 0
    with open(filename, "r") as file:
        for _ in file:
            count += 1
    return count

Задача 5.

# readlines() загружает все строки в память сразу
# for line in file читает по одной строке, не загружая весь файл

Нюансы и подводные камни

Символы новой строки

readline() и readlines() возвращают строки с символами \n. Используй strip() для их удаления.

with open("file.txt", "r") as file:
    line = file.readline().strip()   # Убирает \n

read() с параметром

with open("file.txt", "r") as file:
    first_100 = file.read(100)   # Читаем 100 символов

Позиция в файле

После чтения файла позиция смещается.

with open("file.txt", "r") as file:
    line1 = file.readline()
    print(file.tell())   # Показывает текущую позицию

Частые ошибки и как их избежать

Ошибка 1: Чтение большого файла через read()

❌ content = file.read() — загружает весь файл в память

✅ for line in file: — читает построчно

Ошибка 2: Забыл удалить \n

Используй strip() для удаления символов новой строки.

Ошибка 3: Неправильная кодировка

Всегда указывай encoding="utf-8" для русских текстов.

Шпаргалка

Что нужноКак пишется
Прочитать весь файлcontent = file.read()
Прочитать N символовcontent = file.read(N)
Прочитать одну строкуline = file.readline()
Прочитать все строки в списокlines = file.readlines()
Итерация по строкамfor line in file:
Прочитать файл целиком (с with)with open("f", "r") as f: data = f.read()

Заключение / Выводы

Сегодня мы узнали:

  • read() — чтение всего файла
  • readline() — чтение по строкам
  • readlines() — чтение в список
  • Итерация по файлу — самый эффективный способ

КВИЗ

Что дальше?

Оцените статью
IMI-DS - PYTHON LERNEN
Содержание
Оглавление ×