【问题标题】:best practice - whats the best way to watch a directory最佳实践 - 观看目录的最佳方式是什么
【发布时间】:2012-08-09 20:18:34
【问题描述】:

我需要设置一个脚本来监视文件夹中特定类型的文件。我已经制作了这段代码,但我想知道是否有更好的方法?

import os


def listAppleseedFiles(directory_path):
    directory_entities =  os.listdir(directory_path)
    files = []
    appleseed_files = []
    for entity in directory_entities:
        file_path = os.path.join(directory_path, entity)
        if os.path.isfile(file_path):
            if os.path.splitext(file_path)[1] == '.appleseed':
                appleseed_files.append(file_path)

    return appleseed_files

while True:
    for file in listAppleseedFiles('/dir_name'):

        doSomething()

【问题讨论】:

标签: python directory watch


【解决方案1】:

试试Watchdog!从他们的例子中:

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

event_handler = LoggingEventHandler()
observer = Observer()
observer.schedule(event_handler, path='/dir_name', recursive=True)
observer.start()
try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()
observer.join()

【讨论】:

    【解决方案2】:

    我已经成功使用了来自 PyPi 的 watcher,它是 API ReadDirectoryChangesW 的包装器。这是一个示例(Py3,但它在 Py2 上运行):

    from watcher import *
    import time
    
    def callback(*stuff):
        if stuff[0] == FILE_ACTION_REMOVED:
            print(stuff[1],"deleted")
        else:
            print(stuff)
    
    w = Watcher('C:\\' , callback)
    w.flags = FILE_NOTIFY_CHANGE_FILE_NAME
    w.start()
    
    while True:  
        time.sleep(100)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多