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