2012-04-06 193 views
1

我有一个自定义的HTTP客户端,我在生产中使用python3.x。 现在我需要为python2.7完成相同的功能。 我只有与一个语句的问题:httplib.HTTPResponse.read()意外的关键字参数'amt'

data = response.read(amt = 10 *1024 *1024) 

其中响应由返回:

urllib2.urlopen(request, timeout=timeout) 

所以它是类型的

httplib.HTTPResponse 

httplib.HTTPResponse.read() 

支持AMT下长度的可选参数python2.7。不过,我得到的错误:

Traceback (most recent call last): 
    File "D:\eclipse_workspace\py27\wsdconfirmationserver.py", line 152, in <module> 
print(customHttpRequest(url="http://test.com/")) 
    File "D:\eclipse_workspace\py27\wsdconfirmationserver.py", line 109, in customHttpRequest 
    data = response.read(amt = 10 *1024 *1024)         
TypeError: read() got an unexpected keyword argument 'amt' 

现在讨人喜欢的事情是,如果我重命名阅读()在httplib.HTTPResponse此功能并没有任何失败,更多的来源,但很明显,我介绍在其他无数问题码。 我徘徊为什么会发生这种情况...似乎是一个Python中的错误,但是......也许是我不明白的东西。感谢您的时间!

+1

请粘贴整个回溯。 – 2012-04-06 13:59:09

+0

谢谢,回溯建议实际上解决了我的困惑,请参阅接受解决方案的评论。 – sanyi 2012-04-10 12:19:09

回答

1

我不认为read()需要kwarg,只是尝试传递整数的文件大小?

data = response.read(10 *1024 *1024) 

http://docs.python.org/library/stdtypes.html#file.read

+0

正确,它的工作原理,我现在可以在callstack中看到response.read不会直接传递给httplib.HTTPResponse.read()(读取[httplib.py:533]),它会通过中介读取(读取[socket.py:380])。这对我来说有点不直观。 – sanyi 2012-04-10 12:17:04

相关问题