2013-03-11 61 views
0

我可以直接从HTTP位置读取以用于xlrd吗?Python中的XLRD和HTTP Excel文件

我已经试过如下:

import ntlm, urllib2 
url = 'http://myurl/file.xls' 
passman.add_password(None, url, login, password) 
auth_NTLM = HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(passman) 
opener = urllib2.build_opener(auth_NTLM) 
sock = urllib2.urlopen(url) 
content = sock.read() 

,并有一个函数ReadFromExcel读取Excel文件并返回一些数据,但它不能从阅读内容。

ReadFromExcel(content) 
    book = xlrd.open_workbook(filename) 
    File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 400, in open_workbook 
    f = open(filename, "rb") 
TypeError: file() argument 1 must be encoded string without NULL bytes, not str 

有什么想法?

+0

看起来像它! file_content是我需要的。谢谢! – pedram 2013-03-11 19:52:23

回答

3

你应该通过一个文件名,而不是文件的内容:

import os 
import tempfile 

with tempfile.NamedTemoraryFile(suffix='.xls') as file: 
    file.write(content) 
    file.delete = False 

try: 
    result = ReadFromExcel(file.name) 
finally: 
    os.remove(file.name) 

或者使用file_contents parameter