我有一个很大的zip文件,里面有一个文件。我想将该文件解压缩到一个给定的目录中进行进一步处理,并使用了以下代码:
def unzip(zipfile: ZipFile, filename: str, dest: str):
ZipFile.extract(zipfile, filename, dest)
此函数使用调用:
with ZipFile(file_path, "r") as zip_source:
unzip(zip_source, zip_source.infolist()[0], extract_path) # extract path is correctly defined earlier in the code
解压缩一个大文件似乎需要很长时间(文件大小>500Mb(,我想优化这个解决方案。
我发现的所有优化都是基于多处理的,以便更快地提取多个文件,然而,我的zip只包含一个文件,所以多处理似乎不是解决问题的办法。
如果一个zip文件中有一个文件是使用常用的解压缩算法LZ77/LZW/LZSS压缩的,则不能并行解压缩该文件。这些算法本质上是连续的。
此外,已知这些解压缩方法速度较慢(通常比从存储设备读取文件慢得多(。这主要是因为算法本身:它们的复杂性,以及大多数主流处理器无法大幅加快计算速度的事实。
因此,没有办法更快地解压缩文件,尽管您可能会发现通过使用另一个库来实现稍微快一点。