file_writer¶
- file_writer(fileobj)¶
- Параметры:
fileobj (BufferedReader) – Файловый объект для чтения
- Результат:
Генератор байтовых чанков
- Тип результата:
Generator[bytes, None, None]
Потоковое чтение файла с разбиением на чанки фиксированного размера.
Описание:
Функция читает файл порциями фиксированного размера (CHUNK_SIZE) и возвращает
генератор, который последовательно отдает чанки. Это позволяет обрабатывать
большие файлы без загрузки всего содержимого в память.
Ключевые особенности:
Потоковая обработка - файл читается по частям
Фиксированный размер чанков - определяется константой
CHUNK_SIZEГенератор - ленивая загрузка данных
Эффективность памяти - не загружает весь файл в память
Примеры использования:
# Пример 1: Базовое использование
from io import BufferedReader
from native_dumper.common import file_writer
with open("large_file.bin", "rb") as f:
buffered = BufferedReader(f)
for chunk in file_writer(buffered):
# Обработка каждого чанка
process_chunk(chunk)
# Пример 2: Использование в конвейере обработки
with open("data.bin", "rb") as f:
# Чтение -> Сжатие -> Запись
compressed = compress_stream(file_writer(BufferedReader(f)))
with open("compressed.bin", "wb") as out_f:
for chunk in compressed:
out_f.write(chunk)
# Пример 3: Подсчет статистики
with open("log_file.txt", "rb") as f:
total_size = 0
chunk_count = 0
for chunk in file_writer(BufferedReader(f)):
total_size += len(chunk)
chunk_count += 1
print(f"Файл разбит на {chunk_count} чанков")
print(f"Общий размер: {total_size} байт")
Примечания:
Размер чанка определяется глобальной константой
CHUNK_SIZEФункция ожидает
BufferedReader, но может работать с любым файловым объектомГенератор завершается, когда достигается конец файла
Рекомендуется использовать для файлов больших размеров
См. также:
CHUNK_SIZE - Константа
CHUNK_SIZE