Python: написание кода, который распознает объект и считает его - PullRequest
0 голосов
/ 13 апреля 2019

Я пишу программу на python, которая подсчитывает и распознает объект на изображении с помощью колба, когда я получил ошибку в следующем коде,

drive_url = 'https://drive.google.com/uc?export=download&confirm=jH_3&id=' + DATASET_DRIVEID
file_name = DATASET_DRIVEID + '.zip'

urllib.request.urlretrieve(drive_url, file_name)
print('Download completed!')

os.makedirs(DATASET_DIR, exist_ok=True)
with zipfile.ZipFile(file_name, 'r') as zip_ref:
  zip_ref.extractall(DATASET_DIR)
os.remove(file_name)
print('Extract completed!')

загрузка файла была успешно завершена, но я обнаружил, что ошибка в части извлечения выглядит как следующая ошибка:

Download completed!
---------------------------------------------------------------------------
BadZipFile                                Traceback (most recent call last)
<ipython-input-5-6646b94bdb6f> in <module>()
      6 
      7 os.makedirs(DATASET_DIR, exist_ok=True)
----> 8 with zipfile.ZipFile(file_name, 'r') as zip_ref:
      9   zip_ref.extractall(DATASET_DIR)
     10 os.remove(file_name)

/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

Есть предложения?

1 Ответ

0 голосов
/ 13 апреля 2019

Ваш код Python выглядит правильно, за исключением значения drive_url.

Сообщение об ошибке указывает, что файл с именем file_name не является ZIP-файлом. urlretrieve, возможно, загрузили что-то другое, например страницу ошибки или файл другого формата. Возможно, ваш drive_url неверен (т. Е. Это не ссылка на скачивание, используемая вашим браузером, а ссылка на веб-страницу), или пользователь, добавивший файл, удалил файл с Google Диска за это время, или вы не указали необходимые файлы cookie для загрузка.

Загрузите drive_url с помощью веб-браузера и посмотрите на загруженный файл (например, используйте команду file в Linux).

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