2017-07-31 79 views
4

我正在尋找一種方法來檢查5個域的文檔根目錄列表,以inotify目錄觀察。Python Inotify的文件夾列表

對於單個文件夾,它正在這樣

DIRECTORY_TO_WATCH = "/home/serveradmin/"

我有需要我的服務器遞歸地檢查文件夾列表。

我剛開始學習python,並且有一些C語言經驗。剛開始學習發展。

有沒有人可以幫助我呢?我需要一個名爲/tmp/folderlist.txt的文件中提到的5個文件夾中的遞歸inotify監視。

是否有任何可以引用的類似代碼?

回答

0

所以你想創建一個文件夾列表,然後做一個語句來檢查它們是否存在。

所以做

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

用正確的文件夾名稱替換列表中的項目!

祝你好運!

+0

OP希望使用inotify,以便在目錄更改時通知它們。他們不想檢查目錄是否存在 –

+0

是的他是正確的。這需要傳遞給inotify以遞歸地關注文件更改 – Sumesh

+0

可用於此的任何其他選項?也做任何人知道哪些是最有效/有用的C編程到Python轉換器?有沒有這樣的事情 – Sumesh

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

安裝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'] 

對於窗口請參閱:Is there anything like inotify on Windows?