<分区>
我正在尝试检测何时在目录中创建新文件或何时修改目录中的现有文件。
我尝试搜索可以执行此操作的脚本(最好是在 python 或 bash 中),但没有找到。我的环境是 linux 和 Python 2.6
<分区>
我正在尝试检测何时在目录中创建新文件或何时修改目录中的现有文件。
我尝试搜索可以执行此操作的脚本(最好是在 python 或 bash 中),但没有找到。我的环境是 linux 和 Python 2.6
最佳答案
您可以使用 gio
,它是 GLib 的文件系统部分(在 GLib 的 python 绑定(bind)中)
import gio
def directory_changed(monitor, file1, file2, evt_type):
if (evt_type in (gio.FILE_MONITOR_EVENT_CREATED,
gio.FILE_MONITOR_EVENT_DELETED)):
print "Changed:", file1, file2, evt_type
gfile = gio.File(".")
monitor = gfile.monitor_directory(gio.FILE_MONITOR_NONE, None)
monitor.connect("changed", directory_changed)
但是,您的程序必须运行 GLib 主循环才能使事件到达。一种快速测试方法是使用:
import glib
ml = glib.MainLoop()
ml.run()
GLib 是一个高级库,非常适合应用程序。您不必关心它使用哪个底层系统进行文件监控。
我现在看到您使用的是 Fedora Core 2。真的是版本 2 吗?在 GLib 中使用 GIO 可能太旧了。已经提到的 Pyinotify 可能是一个更好的解决方案,尽管不太便携。
关于python - 使用 python 检测新的或修改的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1618853/