使用Python解压大文件

3 投票
3 回答
2697 浏览
提问于 2025-04-18 07:50

我正在尝试用Python解压不同大小的文件(有些文件大小超过4GB),但是我发现有几次,特别是当文件非常大的时候,解压失败了。当我打开新生成的文件时,它是空的。下面是我使用的代码——我的方法有什么问题吗?

        inF = gzip.open(localFile, 'rb')
        localFile = localFile[:-3]
        outF = open(localFile, 'wb')
        outF.write( inF.read() )
        inF.close()
        outF.close()

3 个回答

0

还有一种处理大 .zip 文件的办法(适用于 Ubuntu 16.04.4)。首先,你需要安装 7z:

sudo apt-get install p7zip-full

然后在你的 Python 代码中,使用下面的方式来调用 7zip:

import subprocess
subprocess.call(['7z', 'x', src_file, '-o'+target_dir])
1

在这种情况下,看起来你不需要用Python对你读取的文件进行任何处理,所以你可以直接使用 subprocess.Popen 来更好地完成任务:

from subprocess import Popen
Popen('gunzip %s %s' % (infilename, outfilename)).wait()

你可能需要加上 shell=True,除此之外应该没问题。

-2

这段代码会循环处理一块一块的输入数据,然后把每一块写入一个输出文件。这样做的好处是,我们不会一次性把所有输入数据都读到内存里,这样可以节省内存空间,避免出现一些莫名其妙的崩溃问题。

import gzip, os

localFile = 'cat.gz'
outFile = os.path.splitext(localFile)[0]

print 'Unzipping {} to {}'.format(localFile, outFile)

with gzip.open(localFile, 'rb') as inF:
    with open( outFile, 'wb') as outF:
        outF.write( inF.read(size=1024) )

撰写回答