You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Python watchdog监控文件夹:检测到两个txt文件时获取最早创建的文件

实现方案

核心逻辑

  • 每次文件创建事件触发时,先过滤出.txt后缀的普通文件事件(排除目录创建事件)
  • 扫描目标目录下所有.txt文件,统计数量
  • 当数量≥2时,遍历所有txt文件获取创建时间,筛选出创建时间最早的文件
  • 输出文件名后可直接插入自定义处理逻辑

可直接运行的修改后代码

#!/usr/bin/env python3
import os
import time
import glob
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

# 监控路径可以根据需求修改
MONITOR_PATH = r"/root/test/"

class EventHandler(FileSystemEventHandler):
    def on_created(self, event):
        # 只处理普通文件、后缀为.txt的事件
        if event.is_directory or not event.src_path.endswith('.txt'):
            return
        # 扫描目标目录下所有txt文件
        txt_files = glob.glob(os.path.join(MONITOR_PATH, "*.txt"))
        # 数量不足2个直接跳过
        if len(txt_files) < 2:
            return
        # 遍历获取所有txt文件的创建时间
        file_ctime_list = []
        for file_path in txt_files:
            # Windows下os.path.getctime为创建时间,Linux下为元数据变更时间
            # 若Linux需获取真实创建时间,可根据文件系统替换为statx等接口,常规场景getctime可满足需求
            ctime = os.path.getctime(file_path)
            file_ctime_list.append((ctime, os.path.basename(file_path)))
        # 按创建时间升序排序,第一个就是最旧的文件
        file_ctime_list.sort()
        oldest_file_name = file_ctime_list[0][1]
        print(f"检测到至少2个txt文件,最早创建的文件为:{oldest_file_name}")
        # 此处可扩展自定义处理逻辑,比如移动、删除旧文件等
        # self.custom_process(oldest_file_name)

if __name__ == "__main__":
    event_handler = EventHandler()
    observer = Observer()
    observer.schedule(event_handler, MONITOR_PATH, recursive=True)
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

补充说明

  • 若需监控子目录下的txt文件,可将glob的匹配规则修改为os.path.join(MONITOR_PATH, "**/*.txt"),并添加recursive=True参数
  • 若对Linux下创建时间获取精度要求高,可使用os.stat的st_birthtime属性(仅支持部分文件系统)

内容的提问来源于stack exchange,提问作者Alex Rebell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:36:07