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