Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Openpyxl在保存大文件时挂起_Python_Python 2.7_Openpyxl - Fatal编程技术网

Python Openpyxl在保存大文件时挂起

Python Openpyxl在保存大文件时挂起,python,python-2.7,openpyxl,Python,Python 2.7,Openpyxl,我编写了一个脚本,用于读取XML文件并将相关数据输出到TSV文件。我正在将它转换为使用openpyxl编写XLSX文件。每当我在脚本末尾保存工作簿时,它在保存时会挂起30秒以上。我假设这是由于我正在写入大量数据(10144行到“BG”列)。是否有任何方法可以优化该文件,从而加快保存速度,或者在生成文件时直接写入文件,这样文件就不必在最后这样保存?很难说您的问题到底是什么,但您应该尝试的第一件事是使用: 也可以考虑切换到康斯坦特内存模式(参见)。 希望这能有所帮助。Wow,optimized\u

我编写了一个脚本,用于读取XML文件并将相关数据输出到TSV文件。我正在将它转换为使用openpyxl编写XLSX文件。每当我在脚本末尾保存工作簿时,它在保存时会挂起30秒以上。我假设这是由于我正在写入大量数据(10144行到“BG”列)。是否有任何方法可以优化该文件,从而加快保存速度,或者在生成文件时直接写入文件,这样文件就不必在最后这样保存?

很难说您的问题到底是什么,但您应该尝试的第一件事是使用:

也可以考虑切换到<代码>康斯坦特内存模式(参见)。


希望这能有所帮助。

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!