2019.4.3批量下載圖片代碼

import json #一
import os #二
from urllib.request import  urlretrieve #三
    
with open(r'F:/imaterialist-product-2019-master-碼隆產品識別大賽/imaterialist-product-2019/train.json','r',encoding = 'utf-8') as f:
    txt = json.load(f) #一
for d in txt["images"]:
    try:
        url = d['url'] #下載地址, str
        name = d['id'] #圖片名稱,str
        class_name = str(d['class']) #文件夾名字, int
        if class_name == ' ':                                                                                                                                                                                                                                                                                                                                                                                                                                                   
            continue
        path = 'F:/imaterialist-product-2019-master-碼隆產品識別大賽/imaterialist-product-2019/train/' + class_name + '/'
        if os.path.exists(path): #判斷路徑是否已存在, 二
            pass
        else:
            os.makedirs(path) #不存在則創建文件路徑, 二
        urlretrieve(url, path + name) #下載圖片並存儲, 三
    except:
        print(d.items())
        continue

一、JSON模塊

JSON(JavaScript Object Notation, JS 對象標記) 是一種輕量級的數據交換格式。

python中,專門處理json格式的模塊: json 和 picle模塊

Json 模塊提供了四個方法: dumps、dump、loads、load

pickle 模塊也提供了四個功能:dumps、dump、loads、load

1、dumps、dump:序列化方法

json.dumps()只完成了序列化爲str(序列化、無文件操作)

json.dump()必須傳文件描述符,將序列化的str保存到文件中(序列化 + 寫入文件)

import json

data = [{ 'a': 1, 'b':2, 'c':3 }]
json.dumps(data)

filename = ('a.txt','w')
json.dump({'a':4, 'b':5 }, filename, indent = 4)

2、loads、load:反序列化方法

loads(filename.read())只完成了反序列化(無文件操作、反序列化)

json.load(filename)只接受文件描述符,完成了讀取文件和反序列化(讀文件 + 反序列化 )

import json

with open('a.json', 'r', encoding = 'utf-8') as f:
    aa = json.loads(f.read())
    f.seek(0)
    bb = json.load(f)

3、json和pickle四種方法的用法相同,json序列化出來的格式更通用(其他語言都認識)、pickle序列化出來的格式只有python認識,但pickle序列化功能更強大,可以序列化函數。

4、python對象與json對象的對應關係

python:dict            list、tuple       str              int、float         True        False        None

JSON :object        array               string         number           ture         false          null

二、創建目錄文件夾

Python對文件操作需要import os,包含三個重要的函數。

os.psth.exists(path)判斷一個目錄是否存在

os.makedirs(path)多層創建目錄(當父目錄不存在時,會創建父目錄)

os.mkdir(path)創建目錄(當父目錄不存在時,不回創建父目錄)

如上例代碼:第一次循環創建目錄時,使用os.makedirs(path)會提示目錄不存在,主要原因是還不存在train;但是使用os.makedirs(path)不會報錯,它可以自己創建train。

注意:路徑最好使用‘/’,減少使用‘\’,如path = 'F:/imaterialist-product-2019/train/' + class_name + '/'

三、下載圖片

參數1:圖片下載路徑

參數2:圖片名稱及存儲路徑

#方法一
from urllib.request import urlretrive
urlretrive(arg1, arg2)

 

#方法二
import requests
r = requests.get(arg1)
with open(arg2, 'wb') as f:
    f.write(r.content)

 

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