我正在用 Python 编写一个程序,用于存储系统上每个文件的信息。安装后,它将遍历每个文件,但之后我想在创建新文件或移动文件时更新它。例如,在 Dropbox 服务中,每当我将文件复制到我的 Dropbox 目录时,它都会立即注意到并将其上传到他们的服务器。
有没有办法在 Python 中做到这一点而无需轮询?我正在考虑创建文件时触发的某种事件侦听器。
尝试以下之一:
我认为它们中的第一个更易于使用。使用示例(来自其网站):
import watcher
w = watcher.Watcher(dir, callback)
w.flags = watcher.FILE_NOTIFY_CHANGE_FILE_NAME
w.start()
watcher 是封装系统 API 的模块,在 MSDN 上有描述:
http://msdn.microsoft.com/en-us/library/aa365465(v=vs.85).aspx
因此,flagwatcher.FILE_NOTIFY_CHANGE_FILE_NAME
表示您将收到以下通知:
监视目录或子树中的任何文件名更改都会导致更改通知等待操作返回。更改包括重命名、创建或删除文件。