openpyxl写入7万行时,报内存错误
时间: 2024-09-19 12:14:15 浏览: 48
OpenPyXL 是用于读写 Excel 文件的 Python 库,当尝试一次性写入大量数据时,特别是像 10 万个行的数据,可能会遇到内存限制,因为 OpenPyXL 是基于内存的,它会一次性加载整个工作簿到内存中。
解决这个问题的方法可以有:
1. **分批写入**[^1]:你可以采用分块的方式,比如每次写入 1000 行,而不是一次性写入所有数据。这样做的好处是可以降低内存消耗,但可能增加写入时间。示例代码(假设 `data` 是要写入的工作表):
```python
start_row = 0
while start_row < len(data):
end_row = min(start_row + 1000, len(data))
worksheet.append(data[start_row:end_row])
start_row = end_row
```
2. **流式处理**:利用 OpenPyXL 提供的迭代器功能,逐行写入,不需要一次性加载所有数据到内存。这可能需要对数据结构做适当调整以适应迭代操作。
3. **优化内存管理**:减少不必要的变量和临时数据,释放不再使用的资源,例如关闭已写入的文件或工作簿。
4. **考虑使用其他库**:如 XlsxWriter 或者 Apache POI,它们可能有更好的内存管理策略,尤其针对大文件处理。
关于日志的影响,避免在循环中频繁打印日志信息可以显著提高程序执行速度,特别是在处理大量数据时。你可以在完成某个阶段的操作后再输出日志信息,或者使用更高效的日志级别(如 `WARNING` 或 `ERROR`),只记录关键事件。
阅读全文