检测Mac上的本地目录访问列表

时间:2014-07-21 10:04:47

标签: macos python-2.7 inotify

我在python编程中检测到在Mac上访问文件夹时遇到问题。 我使用Pyinotify,看门狗,fsevent来监控文件更改,这非常好,但现在我需要检测何时访问文件夹。我想知道有人在一个文件夹中打开Finder,这样我就可以检查对该文件夹的更改 例如:我目前在这里文件夹/ 当我去 folder / folder_children 时,我的python程序可以知道。

任何人都知道如何检测它?

1 个答案:

答案 0 :(得分:1)

您可能想要使用Watchman。我们提供了一个(目前没有很好的文档记录)python客户端,它适用于Linux和Mac(以及Solaris和FreeBSD)

https://facebook.github.io/watchman/

对于您的用例,Watchman的以下方面是相关的:

  • Watchman构建文件更改的时间排序索引
  • 每个逻辑更改都有一个关联的“时钟”值
  • 您可以向Watchman查询自时钟值
  • 以来更改的文件列表
  • 为方便起见,您可以要求Watchman使用符号名称跟踪时钟值;我们将这些命名为游标称为

例如:

第一次运行watchman since /path/to/dir n:myclient时,我会在/path/to/dir中获得完整的文件列表。当我第二次及以后运行它时,它会返回自上次运行以来发生更改的文件列表。

您可以构建比since更复杂的查询来匹配某些文件;相关文档:

在结构上:

  • 在远程端,运行Watchman服务并要求它监视您正在同步的文件系统树的根目录。守望者总是递归地观看。
  • 在客户端,您可以定期(或通过您使用的任何启发式来确定何时适用)调用服务器
  • 当客户端轮询时,服务器使用游标名称
  • 向Watchman发出自查询
  • 您的服务器只需要重新检查该列表中的文件

如果要同步多个客户端,则可以为每个离散客户端使用单独的游标名称。