使用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
谁能帮我解决下载多个文件的问题?有一段时间,它会用 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