我的经验是sashkello是正确的,Excel会锁定文件。即使是OpenOffice/LibreOffice也会这样做。他们将文件锁定在磁盘上,并创建临时版本作为工作副本。任何试图访问打开的文件的程序都将被操作系统拒绝。这是因为许多公司将Excel文件视为数据库,但用户不了解并发和同步所涉及的问题。在
我在linux上,会出现这种行为(至少当文件在SAMBA共享上时)。在与文件相同的目录中查找,如果存在名为.~lock.[filename]#的文件,则无法从其他程序读取文件。我不确定是什么强制了这个锁,但我怀疑它是一个NTFS属性。请注意,即使是简单的cp或cat也会失败:cp: error reading ‘CATALOGUE.ods’: Input/output error
更新:实际的锁定机制似乎是“oplocks”,这是一个连接到Windows共享的概念:http://oreilly.com/openbook/samba/book/ch05_05.html。如果共享由Samba管理,解决方法是禁用对某些文件类型的锁定,例如:
veto oplock files = /*.xlsx/
如果你没有在linux上使用共享或NTFS,那么我想只要你的脚本有写权限,你就应该能够运行文件。默认情况下,只有创建文件的用户有写访问权限。在
解决方法2:该限制似乎仅适用于在Excel/LO中以可写方式打开的文件,但是LO至少允许您以只读方式打开文件(转到“文件”->“属性”->“安全性”,设置为只读,保存并重新打开该文件)。我不知道这是否也会成为xlwt的RO。在