使用urllib下载图片时出现IOError

IOError when Using Urllib to Download Pics

谁能帮我解决下载多个文件的问题?有一段时间,它会用 IOError 阻止我并告诉我连接尝试失败。我尝试使用 time.sleep 函数随机休眠几秒钟,但没有帮助。当我重新 运行 代码时,它再次开始下载文件。有什么解决办法吗?

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)

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

很可能是因为没有正确关闭连接导致的错误(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