5

我正在寻找一种方法来检查 5 个域的文档根列表以 inotify 目录监视。

对于单个文件夹,它的工作方式如下

DIRECTORY_TO_WATCH = "/home/serveradmin/"

我有一个文件夹列表,需要为我的服务器递归检查。

我刚开始学习 python 并且有一些 C 语言的实践经验。刚开始学习发展。

有没有人可以帮助我解决这个问题?我需要对名为 /tmp/folderlist.txt 的文件中提到的 5 个文件夹进行递归 inotify 监视

在我可以参考的任何地方都有类似的代码吗?

4

3 回答 3

1

安装inotify-tools

sudo apt-get install inotify-tools

并尝试类似:

inotifywait = ['inotifywait',
               '--recursive',
               '--quiet',
               '--monitor', ## '--timeout', '1',
               '--event',
               'CREATE',
               '--format', '%f']

from subprocess import PIPE, Popen
p = Popen(inotifywait + paths, stdout=PIPE)
for line in iter(p.stdout.readline, ''):
    print(line)

对于 macosx,您可以使用以下方法获得类似的结果fswatch

if sys.platform == 'darwin':
    inotifywait = ['fswatch', '--event', 'Created']

对于 Windows,请参阅:Windows 上有类似 inotify 的东西吗?

于 2017-12-29T02:27:15.317 回答
0

所以你想创建一个文件夹列表,然后做一个 for 语句来检查它们是否存在。

也一样

import os
list = ['folder1', 'folder2', 'folder3', 'folder4', 'folder5']
for i in list:
    print("\nDoes", list[i], "exsist?", os.path.exists("/home/serveradmin/" + list[i]))

用正确的文件夹名称替换列表中的项目!

祝你好运!

于 2017-07-31T17:04:23.000 回答
0

这是我开始工作的示例代码。我需要将“DIRECTORY_TO_WATCH”替换为我将添加到文件中的文件夹列表。所以基本上它将是一个 txt 文件中指定的文件夹列表,这样我就可以继续在该文件中添加未来的文件夹,而无需每次都添加核心代码。

import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class Watcher:
    DIRECTORY_TO_WATCH = "/path/to/my/directory"

    def __init__(self):
        self.observer = Observer()

    def run(self):
        event_handler = Handler()
        self.observer.schedule(event_handler, self.DIRECTORY_TO_WATCH, recursive=True)
        self.observer.start()
        try:
            while True:
                time.sleep(5)
        except:
            self.observer.stop()
            print "Error"
于 2017-08-02T04:42:30.693 回答