2017-07-31 3 views
4

Je cherche un moyen de vérifier une liste de racines de documents de 5 domaines pour inotify la surveillance d'annuaire.Python Inotify pour une liste de dossiers

Pour un seul dossier, il travaille comme celui-ci

DIRECTORY_TO_WATCH = "/home/serveradmin/"

J'ai une liste de dossiers qui doit être vérifié récursive pour mon serveur.

Je viens de commencer à apprendre Python et j'ai une expérience pratique du langage C. Je commence juste à apprendre les développements.

Y a-t-il quelqu'un qui peut m'aider à ce sujet? Je dois avoir une surveillance inotify récursive sur 5 dossiers mentionnés dans un fichier nommé /tmp/folderlist.txt

Y at-il un code similaire disponible partout où je peux me référer?

Répondre

0

Donc, vous voulez créer une liste des dossiers, puis faites une instruction pour vérifier s'ils existent.

Donc, ne

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

Remplacer les éléments de la liste avec les noms de dossier correct!

Bonne chance!

+0

L'OP veut utiliser inotify pour pouvoir être averti lorsqu'un répertoire est changé. Ils ne veulent pas vérifier si un répertoire existe –

+0

Oui, il a raison. Cela doit être passé à inotify pour garder un oeil sur les changements de fichiers récursive – Sumesh

+0

Toutes les autres options disponibles pour cela? est-ce que quelqu'un sait quelle est la programmation c la plus valide/utile aux convertisseurs de python? Y at-il quelque chose comme ça – Sumesh

0

Ceci est l'exemple de code que j'ai commencé à travailler. J'ai besoin de remplacer "DIRECTORY_TO_WATCH" à une liste de dossiers que je vais ajouter dans un fichier. Donc, fondamentalement, ce sera une liste de dossiers spécifiés dans un fichier txt afin que je puisse continuer à ajouter de futurs dossiers dans ce fichier et pas besoin d'ajouter le code de base à chaque fois.

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" 
0

installer inotify-tools:

sudo apt-get install inotify-tools 

et essayer quelque chose comme:

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) 

Pour MacOSX, vous pouvez obtenir des résultats similaires en utilisant fswatch:

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

Pour fenêtres voir: Is there anything like inotify on Windows?