如何使用python的ziplib-fi压缩巨大的普通文件(+20GB)

2024-09-29 17:11:24 发布

您现在位置:Python中文网/ 问答频道 /正文

当文件到达4GB时,z.write中出现struct integer overflow masking is deprecated错误。在

我的代码:

def compressOutputFile(outputFileName, outputPath=UXConfig.myPath):
  os.chdir(outputPath)
  z= zipfile.ZipFile(outputFileName+'.zip', 'wb',zipfile.ZIP_DEFLATED,allowZip64=True)
  UXUtils.log('Writting file')
  z.write(outputFileName)
  UXUtils.log('Writting finished')
  z.close()
  tempFiles.append(outputPath+outputFileName)

文件没有损坏,因为我可以打开并查看行。在


Tags: 文件logis错误integerstructwritedeprecated
1条回答
网友
1楼 · 发布于 2024-09-29 17:11:24

我从未使用过zipfile模块,但我使用了一个with语句,并对8GB文件进行了尝试,它起到了作用(从8GB到44MB:o):

def zipItUp(file):
    with zipfile.ZipFile('zipped.zip', 'w', compression=zipfile.ZIP_DEFLATED, allowZip64=True) as zipped:
        zipped.write(file)

看看这是否有用。如果没有,我想我能想到的唯一的解决方案是将文件分区,然后在每个块上压缩。在

编辑: 如果您使用的是python2.6,那么考虑包含contextlib模块来处理这个topic中引用的退出错误。在

修订后的代码如下:

^{pr2}$

看看这个行不行。干杯!在

相关问题 更多 >

    热门问题