Python 使用Urllib下载PIC时发生IOError

Python 使用Urllib下载PIC时发生IOError,python,urllib,Python,Urllib,有人能帮我下载多个文件吗?有一段时间,它会用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"

有人能帮我下载多个文件吗?有一段时间,它会用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。

错误很可能是由于未正确关闭连接造成的。 关闭也是更好的做法,因此也应该关闭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)

如果问题仍然存在,并且您无法提供进一步的信息,您可以尝试

确切的错误消息是什么?刚刚添加了我的错误屏幕。您可以使用firefox或opera之类的浏览器打开它吗?可以。我还编辑了我的索引列表,从错误停止的地方开始重新运行代码,代码也可以运行。重新启动笔记本电脑后,问题就消失了。我想我只是让我的笔记本电脑开得太久了,它无法正常工作。我可以继续问一下在这种情况下,urllib.urlopen函数和urllib.urlretrieve函数之间的区别吗。它们是相互可变的吗?它们非常相似。urlopen。。。返回类似对象的只读文件,而urlretrieve。。。返回元组文件名、标题。据我所知,它们可以互换使用,但我要说的是。。。而是用于下载和写入磁盘,以及urlopen。。。用于阅读内容。