我尝试使用urllib2访问发布在特定http地址的.csv文件。我使用的代码在~1个月前工作,但现在会偶尔挂在.read()命令上。我做了各种各样的测试试图找出罪犯。我尝试访问的地址是公开的天气数据,来自:
.readline()函数每次都起作用,因此我编写了以下测试,以查看读取过程在文件中的结束位置:
foo=urllib2.urlopen(HTTPadress)
for i in range(1000): print i,dd.readline()
这将打印出每一行,直到程序挂起。如果它挂起,每次都会在同一行,并且这行没有特殊格式或字符(通常在第680行左右)。对于不同的数据文件,它将挂在不同的行,但对于同一个文件,它总是挂在同一行。在
我实际使用的代码是一个较大函数的一部分,该函数用于循环处理多个数据文件:
^{pr2}$urlopen和read函数之间的sleep函数似乎在一段时间内提高了可靠性,而这个函数通常在我通过pdb运行时起作用。在这一点上,我相当确信服务器端发生了一些变化,它干扰了.read()函数,但我不知道这是什么以及如何解决它。在
谢谢!在
我的猜测是服务器没有正确地处理urllib2发送的请求中的
Connection: close
头。您是否尝试过使用timeout
参数来urllib.urlopen
?不过,我不确定这是否会影响read()
操作,或者是否仅限于实际的连接尝试。在相关问题 更多 >
编程相关推荐