我正在尝试使用 urllib2 访问发布在特定 http 地址的 .csv 文件。我使用的代码大约在 1 个月前工作,但现在会偶尔挂在 .read() 命令上。我已经进行了各种测试以试图确定罪魁祸首。我试图访问的地址是来自以下位置的公开天气数据:
.readline() 函数每次都有效,因此我编写了以下测试以查看读取过程在文件中的结束位置:
foo=urllib2.urlopen(HTTPadress)
for i in range(1000): print i,dd.readline()
这将打印出每一行,直到程序挂起。如果挂起,它将每次都在同一行,并且这一行没有特殊的格式或字符(通常在 680 行左右)。对于不同的数据文件,它将挂在不同的行,但对于同一个文件总是相同的。
我实际使用的代码是用于循环多个数据文件的更大函数的一部分:
def qry(query):
data = urllib2.urlopen('http://climate.weatheroffice.gc.ca/climateData/bulkdata_e.html?'+query)
print 'done'
#pdb.set_trace()
time.sleep(5)
tmp=data.read()
return tmp
urlopen 和 read 函数之间的 sleep 函数似乎提高了一段时间的可靠性,当我通过 pdb 运行它时,这个函数通常可以工作。在这一点上,我相当确信服务器端发生了一些变化,干扰了 .read() 函数,但我不知道这是什么以及如何解决它。
谢谢!