Python: работа с файлами (чтение, запись, добавление)

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

Основные методы файлового ввода-вывода

Как организовать безопасную и эффективную работу с файлами?

Наиболее надёжный способ – использование менеджера контекста with. Он автоматически закрывает файл даже при возникновении исключений.

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

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

Такой код гарантирует освобождение ресурсов. Для записи используется режим 'w' или 'a'.

Типичные ошибки:

  • FileNotFoundError – файл не существует. Проверьте путь или создайте файл заранее.
  • UnicodeDecodeError – неверная кодировка. Укажите правильный параметр encoding.
  • Забывают закрыть файл при использовании open() без with – приводит к утечке дескрипторов.

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

Для небольших файлов подходит метод read() без аргументов – возвращает всё содержимое как строку.

f = open('data.txt', 'r')
data = f.read()
f.close()
print(data[:50])

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

Минус: файл не закрывается автоматически при ошибке. Лучше использовать with.

Если файл слишком велик, read() загрузит его целиком в память, что может привести к MemoryError.

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

Используйте цикл по файловому объекту – он читает строки лениво, экономя память.

with open('big_log.txt', 'r', encoding='utf-8') as f:
    for line in f:
        if 'ERROR' in line:
            print(line.strip())

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

Каждая итерация возвращает одну строку (включая символ новой строки).

Не забывайте удалять символ новой строки с помощью strip(), если это необходимо.

Как записать список строк в файл?

Метод writelines() принимает итерируемый объект, но не добавляет символы конца строки автоматически. Нужно добавлять их в данные.

lines = ['Строка 1\n', 'Строка 2\n', 'Строка 3']
with open('output.txt', 'w', encoding='utf-8') as f:
    f.writelines(lines)

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

Для записи одной строки используйте write().

Если забыть '\n', все строки сольются в одну.

Как дописать данные в существующий файл?

Режим 'a' (append) открывает файл для добавления в конец. Если файла нет, он будет создан.

with open('log.txt', 'a', encoding='utf-8') as f:
    f.write('Новая запись\n')

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

Не происходит затирания существующих данных.

В режиме 'a' курсор находится в конце файла, поэтому seek() не позволит перезаписать предыдущие данные.

Как обрабатывать файлы с неизвестной кодировкой?

Указывайте параметр encoding при открытии. Если кодировка не известна, можно попробовать часто используемые (utf-8, cp1251). Для пропуска нечитаемых символов используйте аргумент errors='ignore' или errors='replace'.

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

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

Игнорирование ошибок может привести к потере данных. Лучше определить кодировку через внешние библиотеки или пробовать несколько вариантов.

Как читать и записывать бинарные файлы?

Используйте режимы 'rb' и 'wb'. Это необходимо для изображений, архивов и других нетекстовых данных.

with open('image.jpg', 'rb') as src:
    data = src.read()
with open('copy.jpg', 'wb') as dst:
    dst.write(data)

Python config files (конфигурационные файлы в python)

Кодировка для бинарных файлов не указывается.

Открытие бинарного файла в текстовом режиме ('r') приведёт к искажению данных.

Как использовать модуль pathlib для работы с файлами?

Объект Path предоставляет методы read_text() и write_text(), которые автоматически закрывают файл и поддерживают кодировку.

from pathlib import Path
path = Path('example.txt')
content = path.read_text(encoding='utf-8')
path.write_text('Новый текст', encoding='utf-8')

Этот подход считается более современным и лаконичным.

Для больших файлов методы read_text/write_text загружают всё содержимое в память, что неэффективно.

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

Расширенные примеры работы с файлами

Пример
def load_config(filepath):
    config = {}
    with open(filepath, 'r', encoding='utf-8') as f:
        for line in f:
            line = line.strip()
            if not line or line.startswith('#'):
                continue
            if '=' in line:
                key, value = line.split('=', 1)
                config[key.strip()] = value.strip()
    return config

config_data = load_config('settings.ini')
print(config_data)
{'port': '8080', 'host': 'localhost', 'debug': 'true'}
Пример
def copy_file_chunked(src_path, dst_path, buffer_size=4096):
    with open(src_path, 'rb') as src, open(dst_path, 'wb') as dst:
        while True:
            chunk = src.read(buffer_size)
            if not chunk:
                break
            dst.write(chunk)
    print('Копирование завершено')

copy_file_chunked('source.dat', 'destination.dat')
Копирование завершено
Пример
with open('data.csv', 'r', encoding='utf-8') as f:
    header = f.readline().strip().split(',')
    print('Заголовки:', header)
    for line in f:
        row = line.strip().split(',')
        if len(row) >= 3 and row[2].isdigit():
            if int(row[2]) > 100:
                print('Крупная запись:', row)
Заголовки: ['id', 'name', 'value']
Крупная запись: ['3', 'Товар C', '150']
Крупная запись: ['7', 'Товар G', '200']
Пример
import time

def safe_read(filepath, retries=3, delay=1):
    for attempt in range(retries):
        try:
            with open(filepath, 'r', encoding='utf-8') as f:
                return f.read()
        except (FileNotFoundError, PermissionError) as e:
            print(f'Попытка {attempt+1} не удалась: {e}')
            time.sleep(delay)
    raise Exception(f'Не удалось прочитать файл {filepath} после {retries} попыток')

content = safe_read('important.txt')
print(content[:100])
Попытка 1 не удалась: [Errno 2] No such file or directory: 'important.txt'
Попытка 2 не удалась: [Errno 2] No such file or directory: 'important.txt'
Попытка 3 не удалась: [Errno 2] No such file or directory: 'important.txt'
Traceback (most recent call last):
...
Exception: Не удалось прочитать файл important.txt после 3 попыток

Ввод из файла в Python - comments

En
ввод в файл python (python)