Python 如何写入打开的文件?

Python 如何写入打开的文件?,python,openpyxl,Python,Openpyxl,我正在使用将脚本的输出写入Excel文件,运行良好。但是,如果在Python尝试写入Excel文件时意外打开了Excel文件,则会显示一个PermissionError——这是预期的。在这种情况下,我更愿意以某种方式书写,而不是显示错误。有办法做到这一点吗?您不能真正解决这个问题,因为问题不在于openpyxl本身,而在于您手动打开的文件如果将其作为只读文件打开,则不会出现该错误。当然,您不能(轻松地)以编程方式解决这个问题,因为openpyxl不知道您在后台运行的Excel的开放实例 注意以只

我正在使用将脚本的输出写入Excel文件,运行良好。但是,如果在Python尝试写入Excel文件时意外打开了Excel文件,则会显示一个
PermissionError
——这是预期的。在这种情况下,我更愿意以某种方式书写,而不是显示错误。有办法做到这一点吗?

您不能真正解决这个问题,因为问题不在于
openpyxl本身,而在于您手动打开的文件如果将其作为只读文件打开,则不会出现该错误。当然,您不能(轻松地)以编程方式解决这个问题,因为
openpyxl
不知道您在后台运行的Excel的开放实例

注意以只读方式打开文件时,您将看不到
openpyxl
中保存的更改

为了避免丢失您要保存的更改,一种可能的解决方法是允许用户关闭Excel实例并再次尝试保存。比如:

为True时:
尝试:
wb.save(路径)
除许可错误外:
输入(f“请关闭excel{path}并按Enter键”)
其他:
打印(f“Excel文件成功保存在-{path}”)
打破
或者,保存到临时文件,稍后让用户合并:

从pathlib导入路径
尝试:
wb.save(路径)
除许可错误外:
路径=路径(路径)
temp_path=path.with_name(f“{path.stem}{temp{path.suffix}”)
wb.save(临时路径)
打印(f“临时保存在-{temp_path}的Excel文件”)
其他:
打印(f“Excel文件成功保存在-{path}”)

警告:这些可能会掩盖其他可能的
许可错误,因此请小心使用。

您无法真正解决此问题,因为问题不在于
openpyxl
本身,而在于您手动打开的文件如果将其作为只读文件打开,则不会出现该错误。当然,您不能(轻松地)以编程方式解决这个问题,因为
openpyxl
不知道您在后台运行的Excel的开放实例

注意以只读方式打开文件时,您将看不到
openpyxl
中保存的更改

为了避免丢失您要保存的更改,一种可能的解决方法是允许用户关闭Excel实例并再次尝试保存。比如:

为True时:
尝试:
wb.save(路径)
除许可错误外:
输入(f“请关闭excel{path}并按Enter键”)
其他:
打印(f“Excel文件成功保存在-{path}”)
打破
或者,保存到临时文件,稍后让用户合并:

从pathlib导入路径
尝试:
wb.save(路径)
除许可错误外:
路径=路径(路径)
temp_path=path.with_name(f“{path.stem}{temp{path.suffix}”)
wb.save(临时路径)
打印(f“临时保存在-{temp_path}的Excel文件”)
其他:
打印(f“Excel文件成功保存在-{path}”)

警告:这些可能会掩盖其他可能的
PermissionError
s,因此请小心使用。

您使用的是什么操作系统?是否有帮助?建议不要写入打开的文件。我使用的是windows 10异常有什么问题?这里似乎是写东西的地方,让你有机会做点什么,比如在Excel中关闭文件。你使用的是什么操作系统?有帮助吗?不建议写入打开的文件。我使用的是windows 10。例外情况有什么问题?这似乎是写东西在这里,让你有机会做一些事情,如关闭Excel中的文件。或任何其他处理,如保存到不同的文件+无论如何,谢谢@SergeBallesta!我添加了一些类似于您建议的内容或任何其他处理(如保存到其他文件)的内容+无论如何,谢谢@SergeBallesta!我按照你的建议加了一些东西