在Python中的XLRD和HTTP Excel文件
我可以直接从HTTP位置读取与xlrd一起使用吗?
我已经尝试了以下内容:
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
有任何想法吗?
您应该传递文件名称而不是文件内容:
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
参数 。