初学者Python:在打开时保存excel文件

我有一个简单的问题,我希望有一个简单的解决方案.

我正在使用xlwt包编写python(2.7)代码来编写excel文件.程序获取数据并将其写入正在不断保存的文件中.问题是每当我打开文件检查数据并且python尝试保存文件时程序崩溃.

有什么方法可以让python在打开文件时保存文件吗?

最佳答案 我的经验是sashkello是正确的,Excel锁定文件.甚至OpenOffice / LibreOffice都是这样做的.它们将文件锁定在磁盘上并创建临时版本作为工作副本.操作系统将拒绝任何试图访问打开文件的程序.原因是许多公司将Excel文件视为数据库,但用户不了解并发和同步中涉及的问题.

我在linux上,我得到这种行为(至少当文件在SAMBA共享上时).查看与文件相同的目录,如果名为.~lock.[filename]#的文件存在,那么您将无法从其他程序读取您的文件.我不确定是什么强制执行此锁,但我怀疑它是NTFS属性.请注意,即使是简单的cp或cat也会失败:cp:错误读取’CATALOGUE.ods’:输入/输出错误

更新:实际的锁定机制似乎是’oplocks`,一个连接到Windows共享的概念:http://oreilly.com/openbook/samba/book/ch05_05.html.如果共享由Samba管理,则解决方法是禁用某些文件类型的锁定,例如:

否决权oplock文件= /*.xlsx/

如果您没有在Linux上使用共享或NTFS,那么只要您的脚本具有写入权限,我猜您应该能够RW文件.默认情况下,只有创建该文件的用户才具有写访问权限.

解决方法2:如果您将文件在Excel / LO中打开为可写,则限制似乎仅适用,但LO至少允许您以只读方式打开文件(转到文件 – >属性 – >安全性,设置只读,保存并重新打开文件).我不知道这是否也会使它成为xlwt的RO.

点赞