Основные операции ввода вывода: чтение текстовых данных из файлов

Раздел: Ввод/вывод -> Файловый ввод-вывод

Основные подходы к чтению текста из файла

Считывание всего содержимого через read()

Наиболее простой и часто используемый способ - метод read() объекта файла, открытого в текстовом режиме. Для корректного закрытия файла применяется контекстный менеджер with.

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

ввод программ на python (ввод данных в программе python)

Если файл небольшой, этот метод эффективен и удобен. Указание кодировки обязательно при нестандартных настройках системы.

Возможные проблемы:

  • FileNotFoundError - если файла не существует. Решение: проверять существование через os.path.exists() или ловить исключение.
  • UnicodeDecodeError - если файл сохранён в другой кодировке. Решение: указать правильный параметр encoding, например 'cp1251' для Windows.
  • MemoryError - при попытке прочитать огромный файл целиком. Решение: использовать построчное чтение.

Как прочитать файл построчно?

Для обработки больших файлов удобно читать строку за строкой с помощью цикла for line in f.

with open('data.txt', 'r', encoding='utf-8') as f:
    for line in f:
        print(line.rstrip())

Python file io (ввод-вывод файлов в python)

Такой подход не загружает весь файл в память, а обрабатывает каждую строку по мере чтения.

Как получить список всех строк в файле?

Метод readlines() возвращает список строк, каждая из которых содержит символ новой строки.

with open('lines.txt', 'r') as f:
    lines = f.readlines()
print(lines)

Python temp files (временные файлы в python)

Удобно, если нужно работать сразу со всеми строками как с элементами списка. Для удаления лишних пробелов часто применяют list(map(str.strip, lines)).

Проблема: при использовании readlines() на большом файле может не хватить памяти. Альтернатива - построчный цикл.

Как прочитать файл с нестандартной кодировкой, например cp1251?

Параметр encoding в open() позволяет указать любую кодировку, поддерживаемую Python.

with open('windows.txt', 'r', encoding='cp1251') as f:
    text = f.read()
print(text)

Python index files (индексация файлов в python)

Если кодировка неизвестна, можно воспользоваться модулем chardet для автоматического определения.

Как прочитать файл, используя pathlib?

Библиотека pathlib предоставляет объектно-ориентированный интерфейс работы с путями и файлами.

from pathlib import Path

path = Path('example.txt')
content = path.read_text(encoding='utf-8')
print(content)

File python class (класс для работы с файлами в python)

Метод read_text() автоматически открывает и закрывает файл, принимает кодировку.

Как прочитать большой файл, не загружая его в память целиком?

Итерация по строкам с последующей обработкой каждой строки в цикле - наилучший вариант.

with open('huge_file.log', 'r') as f:
    for line in f:
        if len(line) > 100:
            print('Длинная строка:', line[:50])

Python file utf 8 (кодировка utf-8 для файлов в python)

Для текстовых файлов с разделителями можно также читать блоками фиксированного размера через f.read(size).

Типичная ошибка: попытка сохранить все строки в список или строку при большом объёме данных приводит к переполнению памяти. Итерация решает эту проблему.

Как прочитать файл с обработкой ошибок?

Обработка исключений (try/except) позволяет корректно реагировать на отсутствие файла или проблемы с доступом.

try:
    with open('config.txt', 'r') as f:
        data = f.read()
        print(data)
except FileNotFoundError:
    print('Файл не найден. Проверьте путь.')
except PermissionError:
    print('Нет прав на чтение файла.')
except UnicodeDecodeError as e:
    print('Ошибка декодирования:', e)

Такой код не прерывается при ошибке, а сообщает пользователю о проблеме.

- Python log file (логирование в файл в python)
- Python file methods (методы работы с файлами в python)
- File models in python (модели файлов в python)

Расширенные примеры чтения текстовых файлов

Пример
# Пример 1: Чтение всего файла и подсчёт количества символов
with open('poem.txt', 'r', encoding='utf-8') as f:
    text = f.read()
print('Количество символов:', len(text))
Количество символов: 1234
Пример
# Пример 2: Построчное чтение с номерами строк
with open('log.txt', 'r') as f:
    for i, line in enumerate(f, 1):
        print(f'{i}: {line.rstrip()}')
Пример
# Пример 3: Чтение файла и удаление пустых строк
lines = []
with open('dirty.txt', 'r', encoding='utf-8') as f:
    for line in f:
        if line.strip():
            lines.append(line.rstrip())
print('Непустых строк:', len(lines))
Непустых строк: 5
Пример
# Пример 4: Чтение и запись отфильтрованных строк в новый файл
with open('source.txt', 'r') as src, open('filtered.txt', 'w') as dst:
    for line in src:
        if not line.startswith('#'):
            dst.write(line)
print('Строки без комментариев записаны в filtered.txt')
Пример
# Пример 5: Чтение в двоичном режиме и ручное декодирование
with open('data.bin', 'rb') as f:
    raw = f.read()
text = raw.decode('utf-8', errors='replace')
print(text[:200])
Пример
# Пример 6: Использование Path.read_text() с проверкой существования
from pathlib import Path

path = Path('example.txt')
if path.exists():
    content = path.read_text(encoding='utf-8')
    print(content[:100])
else:
    print('Файл не найден')
Пример
# Пример 7: Чтение из stdin (например, конвейер в shell)
import sys

for line in sys.stdin:
    print(line.upper(), end='')
Пример
# Пример 8: Чтение с автоматическим определением кодировки (требуется chardet)
import chardet

with open('unknown.txt', 'rb') as f:
    raw = f.read()
    result = chardet.detect(raw)
    encoding = result['encoding']
    text = raw.decode(encoding)
    print('Кодировка:', encoding)
    print(text[:200])
Пример
# Пример 9: Чтение CSV-подобного файла вручную (без pandas)
with open('data.csv', 'r') as f:
    for line in f:
        row = line.strip().split(',')
        print(row)
Пример
# Пример 10: Чтение с игнорированием ошибки FileNotFoundError через contextlib.suppress
from contextlib import suppress

with suppress(FileNotFoundError):
    with open('optional.txt', 'r') as f:
        print(f.read())
else:
    print('Файл отсутствует, программа продолжает работу')

Чтение текста из файла в Python - comments

En
считать текст python (python)