2015-09-28 66 views
0

我有包含圖像的文本文件,我有一個目錄,我想要保存圖像。在python錯誤處理中下載圖像

import os 
import urllib 
import sys 


def normalize(url): 
    url = url.split("/")[-1] 
    return url.split("\n")[0] 

def main(): 
    out_dir = "Workspace/cnf/img" 

    with open('cnf/image_flower.txt') as url_array: 
    for url in url_array: 
     try: 
      urllib.urlretrieve(url, os.path.join(out_dir, normalize(url))) 
     except Exception as e : 
      print "Exception|",e,"|",url 

print("Images Downloaded") 

的main()

我得到我面臨以下問題 1.I想抓住所有的HTTP錯誤代碼和打印一樣找不到網頁的images.But都挺error.which我的代碼無法打印。 2.我有大約100,000個網址,所以我的代碼花了很多時間。

可否請你建議我一個更好的方式來處理它

回答

0
  1. 您的代碼似乎罰款。但是,您可能想要在「除外」行代碼中檢查縮進。 Python編程基於縮進,因此可能無法工作。

try: urllib.urlretrieve(url, os.path.join(out_dir, normalize(url))) except Exception as e : print "Exception: ",e," at ",url

  • 如果你有10萬左右的URL下載圖像,我想這應該採取有時取決於你的形象有多大。
  • +0

    我的代碼工作正常。我想要的是捕獲是否有http error.like頁面找不到,這種嘗試和異常無法處理。 – akira

    +0

    嘗試打印出您的例外中的錯誤狀態代碼 'print e.code' 如果它返回404,那麼它是頁面未找到錯誤。 然後你可以使用If if 'if e.code == 404: #do stuff .. else:' 如果它仍然不適用於你,也可以檢出urllib2.HTTPError。 –