我正在使用熊猫和xlsxwriter
在 AWS lambda 中创建 Excel 报告。我遇到了一个问题:创建 60MB 区域内相当大的 Excel 文件时,磁盘空间已满,但还有 512MB 的可用磁盘空间。
我一直在试图弄清楚发生这种情况的原因和原因,并且我发现了一个看起来很有前途的房产,我可以通过,constant_memory
,所以我使用以下代码尝试了这一点:
with pd.ExcelWriter(output, options={"constant_memory": True}) as writer:
看来这实际上确保了我的 lambda 始终如一地运行完成,如果我删除它,它就不再完成,但问题是我收到以下警告:
FutureWarning: Use of **kwargs is deprecated, use engine_kwargs instead.
with pd.ExcelWriter(output, options={"constant_memory": True}) as writer:
然后我读了一篇关于SO的文章,我认为这是作者的xlsxwriter
表明此属性在使用 pandas 时实际上不起作用。这一点很明显,因为我只得到了 Excel 报告中的第一列和 360000 行的最后一行。我很困惑如何通过这个来确保我的 lambda 完成0?为什么如果我不通过它,那么我的 lambda 就会耗尽磁盘空间?
第二个奇怪的事情是 pandas 的文档没有提到任何名为options
无论如何,如果我尝试通过constant_memory
using engine_kwargs
:
with pd.ExcelWriter(output, engine_kwargs={'constant_memory': True}) as writer:
我收到以下错误:
TypeError: __init__() got an unexpected keyword argument 'constant_memory'
我希望更熟悉 xlsxwriter 的人可以帮助我理解这几点。
的文档xlsxwriter
还提到了一个属性in_memory
,这似乎可以解决我的问题,但我无法将其传递给pd.ExcelWriter
:
TypeError: __init__() got an unexpected keyword argument 'in_memory'
**编辑:通过in_memory
实际上确实解决了我遇到的问题,但我收到一条弃用警告,使用 kwargs 传递它options
.
with pd.ExcelWriter(output, options={"in_memory": True}) as writer:
FutureWarning: Use of **kwargs is deprecated, use engine_kwargs instead.
with pd.ExcelWriter(output, options={"in_memory": True}) as writer:
我怎样才能将该财产传递给xlsxwriter
使用 pandas 时没有收到弃用警告,因为它似乎解决了我的问题?