使用python解压缩大文件

问题描述 投票:2回答:3

我试图使用python解压缩各种大小的文件(一些大小为4GB或更大),但是我注意到在几种情况下,特别是当文件非常大时,文件无法解压缩。当我打开新的结果文件时,它是空的。以下是我正在使用的代码 - 我的方法有什么问题吗?

        inF = gzip.open(localFile, 'rb')
        localFile = localFile[:-3]
        outF = open(localFile, 'wb')
        outF.write( inF.read() )
        inF.close()
        outF.close()
python gzip
3个回答
-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) )

1
投票

在这种情况下,您似乎不需要python对您读入的文件进行任何处理,因此您可能最好只使用subprocess.Popen

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

你可能需要通过shell=True,但除此之外应该是好的


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])
© www.soinside.com 2019 - 2024. All rights reserved.