如何使用Python监视文件夹变化并在变化发生时执行?

0 投票
5 回答
5269 浏览
提问于 2025-04-15 20:10

我需要监控一个文件夹,看看有没有新文件进来。我是通过以下链接的帮助实现的:
如何监控文件的变化?
问题是,我移动的文件非常大(10GB),我想在所有文件移动完成后收到通知。我尝试每20秒检查一次文件夹的大小,但即使文件显示了正确的大小,Windows 仍然显示文件在移动中。

我找到了一种解决办法,就是使用打开文件的方式,并等待一个输入输出异常。如果文件仍在移动,我会收到错误代码 13。

5 个回答

0

如果你能控制文件导入的过程,我建议在开始复制文件的时候创建一个锁文件,等复制完成后再把它删除。这里说的锁文件其实就是一个空的临时文件,它的作用就是告诉你正在复制文件。然后你的 Python 脚本可以检查这个锁文件是否存在。

0

试着在你检查的时候,看一下最后修改的时间变化,而不是文件的大小。

3

你可以看看这个链接:

http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_changes.html

在这里,你可以看到你提到的方法(简单轮询)和另外两种特定于Windows的技术的比较。在我看来,这两种方法能更好地解决你的问题!

另外,如果你使用的是Linux系统,可以看看iNotify和相关的Python封装:

Pyinotify是一个纯Python模块,用于通过inotify监控Linux平台上的文件系统事件。

这里有链接:http://trac.dbzteam.org/pyinotify

撰写回答