繁体   English   中英

Python 看门狗获取刚刚创建的文件的名称?

[英]Python Watchdog get the name of the file that was just created?

我编写了一个脚本来观察用于创建新文件的目录。 我设置了一个拆分 function 以将 event.src_path 从我提供给观察者的目标目录中拆分出来。 这使我能够成功获取 file_name。

请参阅下面的脚本

def on_created(event):
    source_path = event.src_path
    file_name = source_path.split(TargetDir,1)[1]
    print(f"{file_name} was just Created")

if __name__ == "__main__":
    for dir in range(len(TargetDir)):
        event_handler = FileSystemEventHandler()
        event_handler.on_created = on_created

        observer = Observer()
        observer.schedule(event_handler, path = TargetDir[0], recursive=True)

        observer.start()

但是,现在我正在尝试输入一个目标目录列表,并循环遍历每个目录并调用 on_created() 方法。 现在显然 Target 目录不再是全局变量,我需要尝试将每个 Dir 传递给 function。我正在使用看门狗,并且认为不可能向 on_created() function 添加额外的 arguments。如果我错了,请告诉我该怎么做? 否则,是否没有更简单的方法来获取创建的文件的名称,而无需为此传递目标目录? 我可以获得 event.src,但是这给出了完整路径,然后如果它正在扫描多个目录,我就不知道在哪里拆分它。

好吧,一种简单的方法是为每个目录传入不同的 function,例如:

def create_callback(dir):
    def on_create(event):
        source_path = event.src_path
        file_name = source_path.split(dir, 1)[1]
        print(f"{file_name} was just Created")
    return on_create

if __name__ == "__main__":
    for dir in range(len(TargetDir)):
        event_handler = FileSystemEventHandler()
        event_handler.on_created = create_callback(dir)

        observer = Observer()
        observer.schedule(event_handler, path=TargetDir[0], recursive=True)

        observer.start()

dir变量附加到 on_create function 的on_create ,因此可以在 function 中使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM