Pandas ExcelWriter Openpyxl 正在创建一个必须恢复的损坏文件
Posted
技术标签:
【中文标题】Pandas ExcelWriter Openpyxl 正在创建一个必须恢复的损坏文件【英文标题】:Pandas ExcelWriter Openpyxl is creating a corrupt file that has to be recovered 【发布时间】:2021-08-15 19:46:27 【问题描述】:以下代码成功创建了单个文件,除了最后一个必须在恢复模式下打开的文件。我试过调查所有可能的问题,但没有运气。
问题:根据以下代码,有什么原因导致大多数文件都正确创建,而最后一个文件已损坏?
for key, value in sorted(mdm_sheet_to_df_map.items()):
mdm_group = value.groupby('MDM')
for MDM, group_df in mdm_group:
attachment_mdm = attachment_path_mdm / f'MDM' / f'Q221 New Accounts - MDM - today_string1.xlsx'
attachment1_mdm = os.makedirs(os.path.dirname(attachment_mdm), exist_ok=True)
try:
writer = ExcelWriter(attachment_mdm, engine = 'openpyxl', mode="a")
except FileNotFoundError:
writer = ExcelWriter(attachment_mdm, engine = 'openpyxl')
group_df.to_excel(writer, sheet_name =f'key', index=False)
writer.save()
writer.close()
编辑: 运行脚本时,Python 中没有引发异常/错误。当我尝试打开正在恢复的最后一个文件时发现问题。所有其他文件正常打开。
【问题讨论】:
可能有很多东西,没有文件几乎不可能分辨。 我查看了源文件,没有任何问题。仍然不明白所有其他文件是如何完美创建的,但最后一个文件已损坏。我希望 Excel 能够更具体地说明导致其进入恢复模式的文件的问题。 正如我所说,可能有很多东西。 Excel 非常繁琐,正如您所注意到的,错误消息很少有帮助。 【参考方案1】:我现在也面临同样的问题。对我来说,解决方案是将编写器放入“with”而不是使用 .save 和 .close 方法。
for key, value in sorted(mdm_sheet_to_df_map.items()):
mdm_group = value.groupby('MDM')
for MDM, group_df in mdm_group:
attachment_mdm = attachment_path_mdm / f'MDM' / f'Q221 New Accounts - MDM - today_string1.xlsx'
attachment1_mdm = os.makedirs(os.path.dirname(attachment_mdm), exist_ok=True)
with pd.ExcelWriter(attachment_mdm, engine = 'openpyxl') as writer:
group_df.to_excel(writer, sheet_name =f'key', index=False)
仍然不确定如何处理 FileNotFound。但我认为这应该有助于走这条路。
【讨论】:
以上是关于Pandas ExcelWriter Openpyxl 正在创建一个必须恢复的损坏文件的主要内容,如果未能解决你的问题,请参考以下文章
Pandas ExcelWriter .save() 出错;权限错误 [WinError 32]
Pandas ExcelWriter 是不是适用于 excel 365,或者它支持哪个版本的 excel
Pandas ExcelWriter Openpyxl 正在创建一个必须恢复的损坏文件
有没有办法在使用 pandas Excelwriter 时为某些特定行设置列的宽度?