我已经阅读了许多有关从Google Colab解压缩文件的问题。我的问题不一样,您会明白为什么。
我需要在Google Colab上解压缩一个zip文件,以便对其中的图像进行一些计算。问题是我使用的所有不同实用程序都无法将zip文件识别为zip文件。
images.zip
images.zip
并通过复制链接共享了它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
非常感谢
答案 0 :(得分:0)
我想我明白了问题所在。看起来您要提取的文件不是zip。尝试此操作以验证它是否真的是zipfile。
!apt install file
!file <location_of_zip_file>
我怀疑您下载的文件不是zipfile,因为您可能未提供文件的直接URL。