@curry_pan (yy kk)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

pythonのwatchdogでパス名を取得したい

解決したいこと

watchdogを用いてcsvファイルを監視、作成時にそのファイルのパスを取得する関数を作製したいです。
おそらくdef created内をいじればよいとは考えているのですが、eventが何かわからず困っています。

def on_created(event):
        filepath = event.src_path
        print(filepath)
        return filepath

としても、どのようにreturnを受け取ればよいかわかりません。

初心者のため、わからないことだらけですが返答を頂けると嬉しいです。

作製したコード

コード
import time
import os
from argparse import ArgumentParser

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


def main():
    """メイン関数"""
    # ===== ArgumentParserの設定
    parser = ArgumentParser(description="Monitoring Tool")
    # 引数の処理
    parser.add_argument("-p", "--path", action="store", dest="path", help="監視対象パス")
    # コマンドライン引数のパース
    args = parser.parse_args()
    # 引数の取得
    path = args.path
    # pathの指定がない場合は実行ディレクトリに設定
    if path is None:
        path = "."

    # モニター実行
    # monitor(path)

    patterns = ['*.csv']
    event_handler = PatternMatchingEventHandler(patterns)

    def on_created(event):
        filepath = event.src_path
        # filename = os.path.basename(filepath)
        # print("%s is created"%filename)
        print(filepath)

    event_handler.on_created = on_created

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

0 likes

2Answer

そのPatternMatchingEventHandleron_created()FileSystemEventHandlerを継承したときにそのまま残っているメソッドであり,eventはリファレンスで示されている通り,DirCreatedEventFileCreatedEventです.今回で言えば後者をハンドリングするものと思われます.

この場合,BaseSystemとされているFileSystemEventを参照することで,どういう情報を持つか理解できるはずです.

0Like

Comments

  1. @curry_pan

    Questioner

    おっしゃっていることはおそらくこのコード(下の追記)を指しているのでしょうか。
    ですが、現段階ではまだ理解できません。
    よろしければもう少しご教授願えないでしょうか?

Your answer might help someone💌