Привет! Мы уже научились открывать файлы с помощью open() и with. Теперь пришло время узнать, как читать данные из файлов. В Python есть три основных метода для этого: read(), readline() и readlines().
В этой статье мы разберём:
read()— чтение всего файлаreadline()— чтение по одной строкеreadlines()— чтение в список строк- Какой метод когда использовать
- Что нужно знать перед началом
- Основная часть
- Метод read()
- Метод readline()
- Метод readlines()
- Итерация по файлу (простой способ)
- Сравнение методов
- Чтение больших файлов
- Чтение с обработкой ошибок
- Примеры из реальной жизни
- Задачи для закрепления
- Нюансы и подводные камни
- Символы новой строки
- read() с параметром
- Позиция в файле
- Частые ошибки и как их избежать
- Ошибка 1: Чтение большого файла через read()
- Ошибка 2: Забыл удалить \n
- Ошибка 3: Неправильная кодировка
- Шпаргалка
- Заключение / Выводы
- КВИЗ
- Что дальше?
Что нужно знать перед началом
Для этого урока тебе понадобится:
- Установленный 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() # Убирает \nread() с параметром
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()— чтение в список- Итерация по файлу — самый эффективный способ








