无法在Google Colab中解压缩下载的文件

时间:2020-03-15 22:19:52

标签: python google-drive-api zip google-colaboratory unzip

我已经阅读了许多有关从Google Colab解压缩文件的问题。我的问题不一样,您会明白为什么。

我需要在Google Colab上解压缩一个zip文件,以便对其中的图像进行一些计算。问题是我使用的所有不同实用程序都无法将zip文件识别为zip文件。

  1. 为了避免在创建zip文件时出现任何问题,我让Google云端硬盘为我创建了一个,只需选择多个图像并单击下载即可。 Google云端硬盘会自动创建一个包含图片的zip文件。我们称之为images.zip
  2. 我在GDrive上重新上传了images.zip并通过复制链接共享了它
  3. 然后,我在Google Colab中本地下载images.zip
import urllib
import os

drive_url = 'the_link_to_the_zip_file'
file_name = 'images.zip'

urllib.request.urlretrieve(drive_url, file_name)

os.listdir()

获取:['.config', 'images.zip', 'drive', 'sample_data'],因此文件已成功下载。

现在我想将其解压缩。

使用zipfile

import zipfile

zip_ref = zipfile.ZipFile("images.zip", "r")
zip_ref.extractall()
zip_ref.close()

我得到的错误:

BadZipFile                                Traceback (most recent call last)

<ipython-input-41-eca398f38f4a> in <module>()
----> 1 zip_ref = zipfile.ZipFile("xyz.zip", "r")
      2 zip_ref.extractall()
      3 zip_ref.close()

1 frames

/usr/lib/python3.6/zipfile.py in __init__(self, file, mode, compression, allowZip64)
   1129         try:
   1130             if mode == 'r':
-> 1131                 self._RealGetContents()
   1132             elif mode in ('w', 'x'):
   1133                 # set the modified flag so central directory gets written

/usr/lib/python3.6/zipfile.py in _RealGetContents(self)
   1196             raise BadZipFile("File is not a zip file")
   1197         if not endrec:
-> 1198             raise BadZipFile("File is not a zip file")
   1199         if self.debug > 1:
   1200             print(endrec)

BadZipFile: File is not a zip file

使用解压缩

!unzip -uq "images.zip" -d "/content/drive/My Drive/Test"

我得到的错误:

End-of-central-directory signature not found.  Either this file is not
  a zipfile, or it constitutes one disk of a multi-part archive.  In the
  latter case the central directory and zipfile comment will be found on
  the last disk(s) of this archive.
unzip:  cannot find zipfile directory in one of images.zip or
        images.zip.zip, and cannot find images.zip.ZIP, period.

显然images.zip是一个非常好的zip文件,我可以使用Google云端硬盘在计算机上和在线上打开和修改它们。

注意:上载在计算机上创建的zip文件后,我得到的结果相同。最初我以为我的zip实用程序可能已损坏,但现在看来已损坏的是Google Colab ...

Note2:解决方案不仅是直接访问Drive中的images.zip文件并从那里解压缩,因为可能会发生的是我需要从其他Drive中本地下载zip

非常感谢

1 个答案:

答案 0 :(得分:0)

我想我明白了问题所在。看起来您要提取的文件不是zip。尝试此操作以验证它是否真的是zipfile。

!apt install file
!file <location_of_zip_file> 

我怀疑您下载的文件不是zipfile,因为您可能未提供文件的直接URL。