2013-03-11 1 views
0

xlrd와 함께 사용하기 위해 HTTP 위치에서 직접 읽을 수 있습니까?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() 

및 Excel 파일을 읽고 일부 데이터를 반환하는 함수 ReadFromExcel을 가지고 있지만, 내용에서 읽을 수 없습니다 :

나는 다음과 같은 시도했습니다.

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

답변

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을 사용합니다.

관련 문제