我正在从网上读取一些以 Excel 形式存储的数据文件。我当前的流程涉及使用下面定义的检索函数将文件下载到磁盘,该函数使用 urllib2 库,然后使用 traverseWorkbook 函数解析 Excel 文档。 traverse 函数使用 xlrd 库来解析 excel。
我想执行相同的操作,而不需要将文件下载到磁盘,但更愿意将文件保留在内存中并在内存中解析它。
不确定如何继续,但我确信这是可能的。
def retrieveFile(url, filename):
try:
req = urllib2.urlopen(url)
CHUNK = 16 * 1024
with open(filename, 'wb') as fp:
while True:
chunk = req.read(CHUNK)
if not chunk: break
fp.write(chunk)
return True
except Exception, e:
return None
def traverseWorkbook(filename):
values = []
wb = open_workbook(filename)
for s in wb.sheets():
for row in range(s.nrows):
if row > 10:
rowData = processRow(s, row, type)
if rowData:
values.append(rowData)
最佳答案
您可以使用以下方法将整个文件读入内存:
data = urllib2.urlopen(url).read()
文件进入内存后,您可以使用 open_workbook
的 file_contents
参数将其加载到 xlrd
中:
wb = xlrd.open_workbook(url, file_contents=data)
将 url 作为文件名传入,因为文档指出它可能会在消息中使用;否则,它将被忽略。
因此,您的 traverseWorbook
方法可以重写为:
def traverseWorkbook(url):
values = []
data = urllib2.urlopen(url).read()
wb = xlrd.open_workbook(filename, file_contents=data)
for s in wb.sheets():
for row in range(s.nrows):
if row > 10:
rowData = processRow(s, row, type)
if rowData:
values.append(rowData)
return values
关于python - 使用python处理内存中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23378373/