我正在尝试使用python解压缩各种大小(某些大小为4GB或更大)的文件,但是我注意到在某些情况下,尤其是当文件过大时,文件无法解压缩。当我打开新的结果文件时,它是空的。以下是我使用的代码-我的方法有什么问题吗?
inF = gzip.open(localFile, 'rb')
localFile = localFile[:-3]
outF = open(localFile, 'wb')
outF.write( inF.read() )
inF.close()
outF.close()
最佳答案
此代码循环输入数据块,并将每个数据块写入输出文件。这样,我们不会立即将整个输入读取到内存中,从而节省了内存并避免了神秘的崩溃。
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) )