2012-12-10 22 views
4

我正在使用urllib2获取Excel文件并保存到下面的响应中。我希望能够使用xlrd或类似的过程来处理这个excel文件。我在下面列出了一些信息,请告诉我是否可以提供更多信息。我怎样才能将响应对象转换成我可以玩的对象?读取使用urllib2检索到的Excel对象

response = <addinfourl at 199999998 whose fp = <socket._fileobject object at 0x100001010>> 

response.read() prints: '\xd0\xcf\x11\xe0...' 

Headers: 
Content-Type: application/vnd.ms-excel 
Transfer-Encoding: chunked 

回答

5

使用xlrd,并根据its API documentation,它看起来像你可以使用类似这样:

book = xlrd.open_workbook(file_contents=response.read()) 

它似乎并不支持读取file对象(其中,海事组织,会是理想的),只采取filename本身或以上file_contents方法。

如果file_contents不存在或不起作用,则必须使用tempfile将响应写入临时文件并读取该文件。

+0

谢谢@zigg。当我第一次尝试这个时,我有'xlrd.open_workbook(file_contents = response)'但没有'.read()'这是导致错误,'AttributeError:addinfourl实例没有属性'__len __' –