Невозможно распаковать загруженный файл в Google Colab - PullRequest
0 голосов
/ 16 марта 2020

Я прочитал десятки вопросов о разархивировании файлов из Google Colab. У меня другой вопрос, вы прочтете почему.

Мне нужно распаковать zip-файл в Google Colab, чтобы выполнить некоторые вычисления с изображениями в нем. Проблема заключается в том, что все используемые мной утилиты не распознают zip-файл как zip-файл.

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

!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-файл от кого-то другого. Диск

Большое спасибо

1 Ответ

0 голосов
/ 09 апреля 2020

Мне кажется, я понял, в чем проблема. Похоже, файл, который вы связываете для извлечения, не является почтовым индексом. Попробуйте, чтобы убедиться, что это действительно zip-файл.

!apt install file
!file <location_of_zip_file> 

Я подозреваю, что загруженный вами файл не является zip-файлом, поскольку вы, возможно, не указали прямой URL-адрес файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...