使用Urllib下载图片时出现IOError

时间:2015-03-08 20:37:53

标签: python urllib

任何人都可以帮我解决下载多个文件的问题吗?有一段时间,它会阻止我 IOError ,并告诉我连接尝试失败。我尝试使用 time.sleep 函数来随机休息几秒钟,但它没有帮助。当我重新运行代码时,它会再次开始下载文件。任何解决方案?

IO_Error

import urllib
import time
import random

index_list=["index#1","index#2",..."index#n"]

for n in index_list:
    u=urllib.urlopen("url_address"+str(n)+".jpg")
    data=u.read()   
    f=open("tm"+str(n)+".jpg","wb")
    f.write(data)
    t=random.uniform(0,1)*10
    print "system sleep time is ", t, " seconds"
    time.sleep(t)

2 个答案:

答案 0 :(得分:0)

也许您没有正确关闭连接,因此服务器看到太多打开的连接?在循环中读取数据后尝试执行u.close()。

答案 1 :(得分:0)

错误很可能是由于没有正确关闭连接(should I call close() after urllib.urlopen()?)引起的。 关闭也是更好的做法,因此您也应该关闭f。 您也可以使用Python的with语句。

import urllib
import time
import random

index_list = ["index#1", "index#2", ..."index#n"]

for n in index_list:
    # The str() function call isn't necessary, since it's a list of strings
    u = urllib.urlopen("url_address" + n + ".jpg")
    data = u.read()
    u.close()
    with open("tm" + n + ".jpg", "wb") as f:
        f.write(data)
    t = random.uniform(0, 1) * 10
    print "system sleep time is ", t, " seconds"
    time.sleep(t)

如果问题仍然存在且您无法提供更多信息,请尝试urllib.urlretrieve