我已阅读此答案:
Pandas / xlsxwriter writer.close() 没有完全关闭excel文件
但是这个解决方案对我不起作用,因为解决方案是不使用 ExcelWriter,因为他们只将一张纸写入文件。他们还使用 xlsxwriter 作为他们的引擎,而我使用的是 openpyxl(如果这有所作为)。
我有一个对象,它使用 pandas ExcelWriter 对象将一系列工作表写入 xlsx 文件。
import pandas as pd
with pd.ExcelWriter("file.xlsx",mode='w') as stream:
for sheet, dataframe in dataframe_dictionary.items():
dataframe.to_excel(stream, sheet_name=sheet)
other_dataframe.to_excel(stream, sheet_name='other')
问题是有时,如果在上下文管理器中引发异常,pandas 不会正确关闭文件。因此,当我尝试删除它时(在我的 python 脚本之外,在 python 脚本完成运行后)我收到一条错误消息说
"The action can't be completed because the file is open in Python"
这是熊猫中的错误还是我做错了什么?除了块之外,是否需要将上下文管理器放在 try 中?我认为上下文管理器的全部意义在于它为您完成了清理工作?有没有办法检查是否有任何文件仍然打开并关闭它们?我在 Jupyter Notebook 中运行脚本。