Python:编写识别对象并对其计数的代码

时间:2019-04-13 06:06:42

标签: python keras google-colaboratory

当我在以下代码中遇到错误时,我正在编写一个python程序,该程序使用colab对图像中的对象进行计数和识别,

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 :(得分:0)

您的Python代码看起来正确,除了drive_url的值。

该错误消息表明名为file_name的文件不是ZIP文件。 urlretrieve可能已经下载了其他内容,例如错误页面或其他格式的文件。也许您的drive_url不正确(例如,它不是浏览器使用的下载链接,而是网页链接),或者上载器同时已从Google云端硬盘删除了文件,或者您未指定必需的文件下载的Cookie。

使用网络浏览器下载drive_url,然后查看下载的文件(例如,在Linux上使用file命令)。