gpt4 book ai didi

python - 使用python处理内存中的文件

转载 作者:太空宇宙 更新时间:2023-11-03 18:24:57 25 4
gpt4 key购买 nike

我正在从网上读取一些以 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_workbookfile_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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com