用户工具

站点工具


踩坑记录:20230822解压缩zip文件报错

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
踩坑记录:20230822解压缩zip文件报错 [2023/08/22 21:06] MNBVC项目组踩坑记录:20230822解压缩zip文件报错 [2023/08/22 22:16] (当前版本) MNBVC项目组
行 23: 行 23:
  
 猜测可能是在压缩包之内删除文件遇到了什么奇怪的缓存不一致之类的问题,导致最后那些表的信息被混乱重复的第二次追加到zip文件的尾部。 猜测可能是在压缩包之内删除文件遇到了什么奇怪的缓存不一致之类的问题,导致最后那些表的信息被混乱重复的第二次追加到zip文件的尾部。
 +
 +正常的解压代码是这样的:
 +
 +
 +  with zipfile.ZipFile(file, 'r') as zip:
 +      zip.extractall('/your/path')
 +
 +
 +我们只需要修改成:
 +
 +
 +  import io
 +  fp = open(file_path, 'rb')
 +  #读出zip文件的数据,排除掉尾部数据
 +  data = fp.read()[:-22]
 +  fp.close()
 +  #找到从右向左的看,第二个尾部数据
 +  index = data.rfind(b'PK\005\006') + 22
 +  #只剩下真正的压缩包数据
 +  data = io.BytesIO(data[:index])
 +  #zipfile可以用byte io来读取数据,和上面的效果一样
 +  with zipfile.ZipFile(data, 'r') as zip:
 +      zip.extractall('/your/path')
 +
 +
踩坑记录/20230822解压缩zip文件报错.1692709576.txt.gz · 最后更改: 2023/08/22 21:06 由 MNBVC项目组