【发布时间】:2011-02-16 10:28:03
【问题描述】:
嗯,几乎所有内容都在标题中。我有一个 dbf 文件,即使它被另一个程序(如 DBU)锁定(编辑),我也想复制它。
如果我尝试使用 shutil.copy 打开或复制,我会得到
>>> f = open('test.dbf', 'rb')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 13] Permission denied: 'test.dbf'
我知道它被锁定在 Windows 级别,因为我无法通过批处理或 Windows 资源管理器复制它。但是有什么方法可以复制这样的文件吗?
【问题讨论】:
-
DBF 文件是 BINARY 文件。用
'rb'打开它们 -
您可能无法在win中复制锁定的文件。
-
@John Machin,你是对的。使用 'r' 标志打开会导致数据损坏,我在代码中对其进行了修复,但仍然找不到复制锁定文件的解决方案。
-
您是否考虑过文件锁定是出于某种目的而发明的可能性,例如阻止人们获取正在更新的文件的不一致或损坏的副本?
-
如果您可以在复制的数据库上应用事务日志,那么真正的数据库可以毫无问题地恢复该模糊副本。