【问题标题】:Copy locked dbf file on windows using python使用python在Windows上复制锁定的dbf文件
【发布时间】: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' 标志打开会导致数据损坏,我在代码中对其进行了修复,但仍然找不到复制锁定文件的解决方案。
  • 您是否考虑过文件锁定是出于某种目的而发明的可能性,例如阻止人们获取正在更新的文件的不一致或损坏的副本?
  • 如果您可以在复制的数据库上应用事务日志,那么真正的数据库可以毫无问题地恢复该模糊副本。

标签: python windows dbf


【解决方案1】:

一般来说,你不能。即使您要绕过锁定机制,另一个进程也可能正在写入文件,您将拍摄的快照可能处于不一致的状态。

根据您的用例,Volume Shadow Copy 可能具有相关性。

【讨论】:

【解决方案2】:

Joakim Schicht 有一个工具可以复制任何锁定的文件。 唯一的问题是某些 AV 将其标记为恶意,而实际上并非如此。 根据您的用例,这可能是一个解决方案。

https://github.com/jschicht/RawCopy

【讨论】:

    猜你喜欢
    • 2010-10-25
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多