如何修复 Colaboratory 中的 zipfile 读取错误?

Posted

技术标签:

【中文标题】如何修复 Colaboratory 中的 zipfile 读取错误?【英文标题】:How to fix zipfile read error in Colaboratory? 【发布时间】:2019-12-27 08:38:08 【问题描述】:

使用 colaboratory 将 zipfile 提取到我的谷歌驱动器时,我收到一条错误消息,提示 zipfile 读取错误。如何解决?

我正在尝试使用以下 python 3 脚本解压缩文件:

from google.colab import drive
drive.mount('/gdrive')

!unzip '/gdrive/My Drive/file.zip' -d '/gdrive/My Drive/Destination/'

从 zip 中提取 4 个文件后出现此错误

error:  zipfile read error

【问题讨论】:

我也有同样的问题。你有没有解决过这个问题 同样的问题,我正在从 colab 本地存储中的驱动器中提取文件,在提取 2628/10000 个图像后,它会导致 zip 文件错误并终止。我尝试了各种替代方案,但没有解决方案。 遇到了同样的问题,卸载和重新安装的驱动器对我有用 有什么解决办法吗?我也面临同样的问题。 2020 年 8 月,25 GB zip 文件仍然存在此问题 【参考方案1】:

试试这个:

import zipfile
import os

file_location = 'file_path/file_name.zip'

with zipfile.ZipFile(file_location, 'r') as zip_ref:
    zip_ref.extractall('/content') # Replace '/content' with where you want to extract all files.

我希望它不会显示任何错误。

【讨论】:

【参考方案2】:

我无法解决为什么,但能够使用以下 Python 代码解决问题(以及一些流程信息):

from zipfile import ZipFile

# Get information about how much you're decompressing
zf = ZipFile('./gdrive/My Drive/poizon/data/images.zip')
uncompress_size = sum((file.file_size for file in zf.infolist()))
print('uncompressed_size',uncompress_size/1e6)

# Loop through all files attempting to decompress each individually
extracted_size = 0
for file in zf.infolist():
    extracted_size += file.file_size
    print ("%s %%" % (extracted_size * 100/uncompress_size))
    try:
      zf.extract(file)
    except:
      continue

【讨论】:

不是真的有效。错误依旧,解压速度变慢并停止

以上是关于如何修复 Colaboratory 中的 zipfile 读取错误?的主要内容,如果未能解决你的问题,请参考以下文章

谷歌colaboratory和谷歌云之间的接口

如何在 Colaboratory 中使用 Tensorboard

R中Zipf(频率与等级)图的命令是啥

如何下载在 Colaboratory 工作区中创建的文件?

google colab [google-colaboratory] ​​中的 conda 环境

无法从 google-colaboratory 打开 google-storage 中的文件