Чтение файла 7z, состоящего из нескольких частей, с использованием Python не удается из-за проблем с памятью.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Чтение файла 7z, состоящего из нескольких частей, с использованием Python не удается из-за проблем с памятью.

Сообщение Anonymous »


Я использую цикл для чтения файлов 7z из нескольких архивов с помощью этого кода.

импортировать py7zr импорт многотомного файла zip_path = f"{ARCHIVE_PATH}/test.7z" с multivolumefile.open(zip_path, mode='rb') в качестве multizip_handler: с py7zr.SevenZipFile(multizip_handler, 'r', пароль=ПАРОЛЬ, фильтры=фильтры) в качестве zip_handler: для fname, fcontent в zip_handler.read(targets=None).items(): проходить Архив относительно большой (73 части общим размером 700 Мб). Я заметил, что объем памяти довольно велик (даже без хранения в памяти какого-либо содержимого переменных, например fname или fcontent). Этот цикл работает, но если я намеренно заполняю память такими командами, как head -c 7G /dev/zero | Tail, цикл выдает ошибку CRC (хотя на самом деле архив успешно протестирован с помощью команды 7z). Цикл довольно простой и использует только библиотечные функции, поэтому я не могу сделать его проще, чем он есть.

РЕДАКТИРОВАТЬ: если быть точнее:
[*]Для некоторых архивов цикл полностью не работает. [*]У некоторых других цикл работает, и я могу сделать вывод, что это проблема с памятью, заполняя память и наблюдая за сбоем цикла (код и архив одинаковы). Заполнение памяти производилось таким образом, чтобы оставалось достаточно места (скажем, 1 Гб).
Я предполагаю, что одна из двух библиотек multivolumefile или py7zr внутренне потребляет много памяти.

Есть ли способ уменьшить объем памяти, чтобы обеспечить успешное чтение многочастного архива независимо от размера архива или размера файлов внутри архива?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»