從網站上下載數據集並解壓——以coco數據集爲例

最近在閱讀源碼時發現了一段值得學習的源碼,實現從網址下載coco數據集到本地,並解壓,在這裏做下記錄,以備借鑑使用。

###以下載annotations爲例
# Setup annotations data paths
annDir = "{}/annotations".format(dataDir)
if dataType == "minival": #給出不同子文件夾的文件夾名、文件名和網址
   annZipFile = "{}/instances_minival2014.json.zip".format(dataDir)
   annFile = "{}/instances_minival2014.json".format(annDir)
   annURL = "https://dl.dropboxusercontent.com/s/o43o90bna78omob/instances_minival2014.json.zip?dl=0"
   unZipDir = annDir
elif dataType == "valminusminival":
   annZipFile = "{}/instances_valminusminival2014.json.zip".format(dataDir)
   annFile = "{}/instances_valminusminival2014.json".format(annDir)
   annURL = "https://dl.dropboxusercontent.com/s/s3tw5zcg7395368/instances_valminusminival2014.json.zip?dl=0"
   unZipDir = annDir
else:
   annZipFile = "{}/annotations_trainval{}.zip".format(dataDir, dataYear)
   annFile = "{}/instances_{}{}.json".format(annDir, dataType, dataYear)
   annURL = "http://images.cocodataset.org/annotations/annotations_trainval{}.zip".format(dataYear)
   unZipDir = dataDir
# print("Annotations paths:"); print(annDir); print(annFile); print(annZipFile); print(annURL)

# Download annotations if not available locally
if not os.path.exists(annDir): #生成文件夾
   os.makedirs(annDir)
if not os.path.exists(annFile):
   if not os.path.exists(annZipFile):
       print("Downloading zipped annotations to " + annZipFile + " ...")
       with urllib.request.urlopen(annURL) as resp, open(annZipFile, 'wb') as out: 
           shutil.copyfileobj(resp, out) #使用urllib包下載壓縮包
       print("... done downloading.")
   print("Unzipping " + annZipFile)
   with zipfile.ZipFile(annZipFile, "r") as zip_ref: #解壓操作
       zip_ref.extractall(unZipDir)
   print("... done unzipping")
print("Will use annotations in " + annFile)

參考地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章