Python Openpyxl在保存大文件时挂起
我编写了一个脚本,用于读取XML文件并将相关数据输出到TSV文件。我正在将它转换为使用openpyxl编写XLSX文件。每当我在脚本末尾保存工作簿时,它在保存时会挂起30秒以上。我假设这是由于我正在写入大量数据(10144行到“BG”列)。是否有任何方法可以优化该文件,从而加快保存速度,或者在生成文件时直接写入文件,这样文件就不必在最后这样保存?很难说您的问题到底是什么,但您应该尝试的第一件事是使用:Python Openpyxl在保存大文件时挂起,python,python-2.7,openpyxl,Python,Python 2.7,Openpyxl,我编写了一个脚本,用于读取XML文件并将相关数据输出到TSV文件。我正在将它转换为使用openpyxl编写XLSX文件。每当我在脚本末尾保存工作簿时,它在保存时会挂起30秒以上。我假设这是由于我正在写入大量数据(10144行到“BG”列)。是否有任何方法可以优化该文件,从而加快保存速度,或者在生成文件时直接写入文件,这样文件就不必在最后这样保存?很难说您的问题到底是什么,但您应该尝试的第一件事是使用: 也可以考虑切换到康斯坦特内存模式(参见)。 希望这能有所帮助。Wow,optimized\u
也可以考虑切换到<代码>康斯坦特内存模式(参见)。
希望这能有所帮助。Wow,
optimized\u write
实际上可以将时间缩短到3秒左右。我也会调查一下。相对于openpyxl,xlsxwriter还有其他值得转换的好处吗。生成的XLSX文件只有6kb,是空的。长话短说,xlsxwriter
具有更多的控制和功能。但是速度不确定。确保在使用优化的openpyxl writer时只使用append
方法。哦,我不确定这是否有效。当我在数据中循环时,我的脚本当前正在写入特定的单元格。我将研究xlsxwriter,看看它是否能做到这一点。我接受了alecxe的建议,转而使用xlsxwriter
。比openpyxl
好得多。把这个放在这里,这样未来的人们就更容易发现解决方案,而不必阅读下面的评论。
from openpyxl import Workbook
wb = Workbook(optimized_write = True)
ws = wb.create_sheet()
# now we'll fill it with 10k rows x 200 columns
for irow in xrange(10000):
ws.append(['%d' % i for i in xrange(200)])
wb.save('new_big_file.xlsx') # don't forget to save!