Я прочитал десятки вопросов о разархивировании файлов из Google Colab. У меня другой вопрос, вы прочтете почему.
Мне нужно распаковать zip-файл в Google Colab, чтобы выполнить некоторые вычисления с изображениями в нем. Проблема заключается в том, что все используемые мной утилиты не распознают zip-файл как zip-файл.
- Чтобы избежать каких-либо проблем при создании zip-файла, я разрешил Google Диск создайте его для меня, просто выбрав несколько изображений и нажав на кнопку «скачать». Google Drive автоматически создает ZIP-файл, содержащий изображения. Давайте назовем это
images.zip
- Я повторно загружаю
images.zip
на GDrive и делюсь им, копируя его ссылку - Затем, в 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
!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 ...
Примечание 2. Решение заключается не только в прямом доступе к файлу images.zip в Диске и разархивировании оттуда, потому что может случиться так, что мне нужно будет загрузить локальный zip-файл от кого-то другого. Диск
Большое спасибо