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

Ble*_*oul 5 python excel file xlwt

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

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

当我打开文件进行阅读时,有没有办法让python保存文件?

Spl*_*iFF 1

我的经验是 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

\n\n

更新:实际的锁定机制似乎是“oplocks”,这是一个与 Windows 共享相关的概念:http://oreilly.com/openbook/samba/book/ch05_05.html。如果共享由 Samba 管理,解决方法是禁用某些文件类型的锁定,例如:

\n\n

veto oplock files = /*.xlsx/

\n\n

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

\n\n

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

\n