0

py7zlibを使用して、.7z アーカイブに保存されているファイルを開いて読み取ろうとしています。これはできますが、メモリ リークが発生しているようです。py7zlib を使用して数百の .7z ファイルをスキャンした後、Python が MemoryError でクラッシュします。組み込みの zipfile ライブラリを使用して .zip ファイルに対して同等の操作を行う場合、この問題は発生しません。.7z ファイルを使用する私のプロセスは基本的に次のとおりです (指定された名前のアーカイブ内のサブファイルを探し、その内容を返します)。

with open(filename, 'rb') as f:
    z = py7zlib.Archive7z(f)
    names = z.getnames()
    if subName in names:
        subFile = z.getmember(subName)
        contents = subFile.read()
    else:
        contents = None

return contents

.7z ファイル オブジェクトを閉じている場合、Archive7z オブジェクトが範囲外に渡されると、メモリ リークが発生する理由を知っている人はいますか? (zipfile ライブラリの ZipFile.close() のように) 従わなければならないクリーンアップまたはファイルを閉じる手順はありますか?

4

0 に答える 0