当文件到达4GB时,我得到 DeprecationWarning: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)
该文件未损坏,因为我可以打开并查看这些行。
答案 0 :(得分:0)
我从未使用过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)
看看这是否有效。如果没有,我认为我能想到的唯一其他解决方案是将文件分区,然后在每个块上分区。
修改: 如果您使用的是Python 2.6,请考虑使用contextlib模块来处理此topic中引用的退出错误。
以下是修订后的代码:
import contextlib
def zipItUp(file):
with contextlib.closing(zipfile.ZipFile('zipped.zip', 'w', compression=zipfile.ZIP_DEFLATED, allowZip64=True)) as zipped:
zipped.write(file)
看看这是否有效。干杯!