繁体   English   中英

使用python解压缩大文件

[英]unzipping large files using python

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

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

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

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

您可能需要传递shell=True ,但shell=True应该很好

大型.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])

此代码循环输入数据块,并将每个数据块写入输出文件。 这样,我们不会立即将整个输入读取到内存中,从而节省了内存并避免了神秘的崩溃。

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) )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM