监视文件/目录的内容? [复制]

Posted

技术标签:

【中文标题】监视文件/目录的内容? [复制]【英文标题】:Monitoring contents of files/directories? [duplicate] 【发布时间】:2010-10-10 12:28:33 【问题描述】:

我在找一个跨平台的文件监控python包?我知道可以使用 pywin32 监控 windows 上的文件,并且有一些包可以在 Linux/Unix 上运行,但是有人知道跨平台的吗?

【问题讨论】:

Tim Golden 有一个非常简单的跨平台方法,可以在此处使用 os.listdir 轮询目录:timgolden.me.uk/python/win32_how_do_i/… “监控”是什么意思?请提供一些关于您正在尝试做什么的提示。 【参考方案1】:

我正在开发一个帮助 Python 的 MIT 许可库 程序尽可能可移植地监视文件系统事件。 我正在努力消除一些差异。高度 目前是 alpha 版本:

在这里查看: http://github.com/gorakhargosh/watchdog/

欢迎提供补丁和贡献。

希望对您有所帮助。 =) 干杯。

【讨论】:

非常感谢,我正在寻找一个跨平台的解决方案,看门狗真的很有帮助! python3 什么时候可以使用? @avendael - 现在,显然。目前支持py3k。 这绝对是必须接受的答案。作为魅力 :) 这是看门狗的用法:pythonhosted.org/watchdog/quickstart.html 上次更新是三年前,我应该继续使用这个库还是去watchgod之类的东西?【参考方案2】:

对于基于 Unix/Linux 的系统,您应该使用 File Alteration Monitor Python bindings 到 libfam。

对于基于 Windows 的系统,您应该绑定 Win32 API FindFirstChangeNotification 和相关函数。

至于跨平台的方式,我不知道有没有好的跨平台方式。我认为最好自己构建一个模块,该模块在检测到它是什么操作系统后,可以在使用上述两种方法之一的任一操作系统上运行。

【讨论】:

您能否在示例中解释一下如何使用 W32 API...因为我不明白...【参考方案3】:

我找到了这个链接,它谈到了你的问题。尽管它并没有真正提供解决方案/库,但我认为它会有所帮助。 http://www.stepthreeprofit.com/2008/06/cross-platform-monitoring-of-filesystem.html

我认为还没有跨平台的,所以你可能想推出自己的。

我在这方面没有经验,所以我不太确定。我希望这会有所帮助。

注意 我的立场是正确的,正如 Adam Bernier 在评论中向我指出的那样,cygwin 上可以使用 gamin。您可能想研究 cygwin 上的其他选项(如果存在)。

【讨论】:

对于 Linux 上的 Gamin 来说似乎是一些不错的反馈。 FWIW,Gamin 列在 cygwin 包中:cygwin.com/packages 啊!赛格温!我没有想到。我的立场是正确的。【参考方案4】:

也可以看看这个选项:

http://pypi.python.org/pypi/watchdog

用于 Windows 和 OS X 上的跨平台应用程序。

【讨论】:

可能是因为看门狗的作者在一年前的一个答案中发布了关于它的内容,而这个回复中没有太多内容?可能不值得投反对票,但也不值得投赞成票。 我喜欢它,因为他说他用过,没关系。 我从来不明白为什么一个答案被否决了。这里是看门狗的用法:pythonhosted.org/watchdog/quickstart.html【参考方案5】:

Linux 上最简单的方法是使用 inotifywait(假设您的内核足够新)。您不需要任何特殊绑定,可以自定义 inotifywait 以按照您想要的任何方式在标准输出上打印输出行。看看this question 就是一个很好的例子。

【讨论】:

他特别提到了跨平台。 inotifywait 仅适用于 linux

以上是关于监视文件/目录的内容? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 bash 监视目录中新创建的文件?

使用 kqueue() 监视目录更改的最佳方法是啥?

Node.js 扩展时间监听器:文件监视器

将文件夹添加到监视目录时不会触发 inotifywait close_write

RSA Archer:使用邮件监视器数据馈送获取邮件的附件

如何在 Mac OS X 上监视目录中的更改?