从HTTP访问.csv文件时Urllib2.read()挂起

2024-09-28 23:20:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用urllib2访问发布在特定http地址的.csv文件。我使用的代码在~1个月前工作,但现在会偶尔挂在.read()命令上。我做了各种各样的测试试图找出罪犯。我尝试访问的地址是公开的天气数据,来自:

http://climate.weatheroffice.gc.ca/climateData/bulkdata_e.html?StationID=47267&hlyRange=2008-07-15|2013-03-20&timeframe=1&Prov=ONT&format=csv&Year=2008&Day=15&Month=9

.readline()函数每次都起作用,因此我编写了以下测试,以查看读取过程在文件中的结束位置:

foo=urllib2.urlopen(HTTPadress)
for i in range(1000): print i,dd.readline()

这将打印出每一行,直到程序挂起。如果它挂起,每次都会在同一行,并且这行没有特殊格式或字符(通常在第680行左右)。对于不同的数据文件,它将挂在不同的行,但对于同一个文件,它总是挂在同一行。在

我实际使用的代码是一个较大函数的一部分,该函数用于循环处理多个数据文件:

^{pr2}$

urlopen和read函数之间的sleep函数似乎在一段时间内提高了可靠性,而这个函数通常在我通过pdb运行时起作用。在这一点上,我相当确信服务器端发生了一些变化,它干扰了.read()函数,但我不知道这是什么以及如何解决它。在

谢谢!在


Tags: 文件csv数据函数代码命令httpread
1条回答
网友
1楼 · 发布于 2024-09-28 23:20:36

我的猜测是服务器没有正确地处理urllib2发送的请求中的Connection: close头。您是否尝试过使用timeout参数来urllib.urlopen?不过,我不确定这是否会影响read()操作,或者是否仅限于实际的连接尝试。在

相关问题 更多 >