在Python中使用watchdog
库监测文件夹新增文件时,可以通过重写FileSystemEventHandler
的on_created
方法来捕获新添加的文件事件,并从中获取文件名。以下是一个简化的示例:
python
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
# 定义一个事件处理器类
class NewFileHandler(FileSystemEventHandler):
def on_created(self, event):
# 只关心文件(而不是目录)的创建事件
if not event.is_directory:
# 获取新创建文件的完整路径
new_file_path = event.src_path
# 提取文件名
file_name = os.path.basename(new_file_path)
print(f'New file created: {file_name}')
# 初始化事件处理器实例
event_handler = NewFileHandler()
# 监控的文件夹路径
watched_dir = '/path/to/watch'
# 创建观察器
observer = Observer()
# 将事件处理器与观察器关联起来
observer.schedule(event_handler, watched_dir, recursive=True)
# 启动观察器
observer.start()
print(f'Starting to watch {watched_dir} for new files...')
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
在这段代码中,当监控的文件夹内有新的文件被创建时,on_created
方法会被调用,从传入的 event
对象中提取出新文件的完整路径,然后通过 os.path.basename
函数获取文件名。如果只想获取不包含扩展名的文件名,还可以进一步使用 os.path.splitext
函数分割文件名和扩展名。