0

私はそのようなコードを持っているとしましょう

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

class MyHandler(PatternMatchingEventHandler):
    patterns = ["*/file.txt"]

    def process(self, event):
        """
        event.event_type 
            'modified' | 'created' | 'moved' | 'deleted'
        event.is_directory
            True | False
        event.src_path
            path/to/observed/file
        """
        # the file will be processed there
        print event.src_path, event.event_type  # print now only for degug
        if event.event_type == 'modified':
            print fname


    def on_modified(self, event):
        self.process(event)

if __name__ == '__main__':
#    args = sys.argv[1:]
    fname = 'file.txt'
    observer = Observer()
    observer.schedule(MyHandler(), path='.')
    observer.start()

    try:
        while True:
            time.sleep(60)
    except KeyboardInterrupt:
        observer.stop()

    observer.join()

私の目標は、ユーザーpatternsが MyHandler クラスの変数に fname を入力することです。

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

class MyHandler(PatternMatchingEventHandler):
    patterns = ["*/"+fname]

    def process(self, event):
        """
        event.event_type 
            'modified' | 'created' | 'moved' | 'deleted'
        event.is_directory
            True | False
        event.src_path
            path/to/observed/file
        """
        # the file will be processed there
        print event.src_path, event.event_type  # print now only for degug
        if event.event_type == 'modified':
            print fname


    def on_modified(self, event):
        self.process(event)

if __name__ == '__main__':
#    args = sys.argv[1:]
    fname = 'file.txt'
    observer = Observer()
    observer.schedule(MyHandler(), path='.')
    observer.start()

    try:
        while True:
            time.sleep(60)
    except KeyboardInterrupt:
        observer.stop()

    observer.join()

上記のように何かを試しましたが、うまくいきませんでした。それは言いfname is not definedます。大丈夫、私patterns = [].append("*/"+fname)も成功しませんでした。

次に、init関数を作成しようとしました

def __init__(fname):
    self.patterns = [].append("*/"+fname)

のように渡されましたobserver.schedule(MyHandler(fname), path='.')

残念!どちらも成功しません。どうすればこれを達成できますか?

4

1 に答える 1