從網絡下載圖片并保存到磁盤文件中
- 建立保存圖片的目錄
如果目錄不存在,則建立文件目錄。
使用os.makedirs(file_path)建立目錄,而不是使用os.mkdir(file_path)。
因為mkdir只能建立單級文件目錄。
makedirs則能建立多級文件目錄,也能建立單級文件目錄。
單級文件目錄:img
多級文件目錄:my/book/img - 獲得圖片名(包含路徑)
從圖片url中取得圖片后綴——jgp,png之類的
os.path.splitext(path)
將文件路徑(包含文件名)拆分為:[路徑\文件名, 文件后綴]
拼接圖片名(包含路徑)
filename = 目錄路徑 +文件分隔符+ 圖片名+圖片后綴
使用os.sep獲得系統文件分隔符,避免不同平臺造成不同的文件分隔符。 - 下載圖片
使用urllib.urlretrieve(url,filename)下載圖片
代碼如下
def save_img(img_url,file_name,file_path='book\img'):
#保存圖片到磁盤文件夾 file_path中,默認為當前腳本運行目錄下的 book\img文件夾
try:
if not os.path.exists(file_path):
print '文件夾',file_path,'不存在,重新建立'
#os.mkdir(file_path)
os.makedirs(file_path)
#獲得圖片后綴
file_suffix = os.path.splitext(img_url)[1]
#拼接圖片名(包含路徑)
filename = '{}{}{}{}'.format(file_path,os.sep,file_name,file_suffix)
#下載圖片,并保存到文件夾中
urllib.urlretrieve(img_url,filename=filename)
except IOError as e:
print '文件操作失敗',e
except Exception as e:
print '錯誤 :',e
我們來下載簡書首頁的圖片來測試一下:
image.png
下載這個圖片
if __name__ == '__main__':
img_url = 'http://upload.jianshu.io/admin_banners/web_images/2474/259a36ccbca577c3064c68ab3c0f1834d77456d7.png'
save_img(img_url,'jianshu')
運行結果如下:
image.png
image.png
保存到指定文件目錄:
if __name__ == '__main__':
file_path = 'I:'+os.sep + 'myimg'
img_url = 'http://upload.jianshu.io/admin_banners/web_images/2474/259a36ccbca577c3064c68ab3c0f1834d77456d7.png'
save_img(img_url,'jianshu',file_path=file_path)
運行結果如下:
image.png
image.png