文件变更事件网络共享

4 投票
5 回答
4360 浏览
提问于 2025-04-17 16:54

我想做的事情:

我有两个文件夹,每个文件夹里大约有90,000个xml和bak文件。

当其中一个文件发生变化时,我需要确保两个文件夹里的xml文件是同步的(当然,更新的文件应该被复制过去)。

问题是:

因为文件数量太多,而且其中一个文件夹是网络共享的,所以我不能简单地遍历文件夹,比较每个文件的修改时间(用os.path.getmtime(file))。

即使使用了watchdog和PyQt也不行(我尝试了这里这里的解决方案)。

我的问题是:

有没有其他方法可以在Windows系统上获取文件变化的事件,而不需要遍历所有这些文件?

5 个回答

1

我可能要冒险给出一个不太准确的回答(因为你没有说明对速度等方面的要求),不过... Dropbox 可以完全满足你的需求,而且是免费的,根本不需要写任何代码。

当然,如果你需要实时同步,或者想避免把文件“分享”给第三方(不过你可以先加密文件),那么这个可能就不太适合你了。

1

这段代码在...

https://stackoverflow.com/a/12345282/976427

当我传入一个网络共享时,似乎可以正常工作。

2

我终于找到了解决办法:我修改了一些网络共享的设置,并使用了FileSystemWatcher

为了防止文件在同步时被重复同步,我使用了一个md5文件哈希值。

我用的代码可以在pastebin上找到(这段代码写得比较简单粗糙,只是这里提到的部分)。

撰写回答