影刀RPA 文件夹监控:新文件到达自动触发处理

发布时间:2026/9/10 2:13:03

影刀RPA 文件夹监控:新文件到达自动触发处理 影刀RPA 文件夹监控新文件到达自动触发处理作者林焱有些场景需要来一个文件处理一个——比如客户通过FTP上传了订单文件、或者某个共享文件夹里有新的PDF需要识别。影刀的定时任务可以周期性检查但间隔太长不够实时、太短又浪费资源。文件夹监控就是解决这个问题的。watchdog库实现文件监控# pip install watchdogimporttimefromwatchdog.observersimportObserverfromwatchdog.eventsimportFileSystemEventHandlerclassFileHandler(FileSystemEventHandler):defon_created(self,event):文件创建时触发ifevent.is_directory:returnfilepathevent.src_path filenameos.path.basename(filepath)print(f发现新文件:{filename})# 处理逻辑iffilename.endswith(.xlsx):process_excel(filepath)eliffilename.endswith(.pdf):process_pdf(filepath)eliffilename.endswith(.csv):process_csv(filepath)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a8594c9084be4e8a8e15b2e4a02f4ced.png#pic_center)defon_modified(self,event):文件修改时触发处理大文件时等写入完成再处理ifevent.is_directory:return# 有些程序写文件时会多次触发modified事件# 这里可以加延时判断文件是否写入完成# 启动监控watch_dirD:/待处理文件/event_handlerFileHandler()observerObserver()observer.schedule(event_handler,watch_dir,recursiveFalse)observer.start()try:whileTrue:time.sleep(1)exceptKeyboardInterrupt:observer.stop()observer.join()大文件防抖处理店群矩阵自动化突破运营极限大文件写入时可能触发多次modified事件。需要防抖——等文件确实不再变化了再处理importosimporttimeclassDebouncedHandler(FileSystemEventHandler):def__init__(self):self.processingset()# 正在处理的文件self.file_sizes{}# 记录文件大小defon_created(self,event):ifevent.is_directory:returnfilepathevent.src_path# 延迟1秒等文件完全写入time.sleep(1)iffilepathinself.processing:returnself.processing.add(filepath)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/52ab12acab9e4e078f08ea6da7c7fbfd.png#pic_center)try:# 确认文件大小不再变化防抖stableFalsefor_inrange(5):# 最多等5秒sizeos.path.getsize(filepath)iffilepathinself.file_sizesandsizeself.file_sizes[filepath]:stableTruebreakself.file_sizes[filepath]size time.sleep(1)ifstable:process_file(filepath)# 处理完移到归档目录archive_pathos.path.join(D:/已处理/,os.path.basename(filepath))os.rename(filepath,archive_path)finally:self.processing.discard(filepath)按文件类型分流defprocess_file(filepath):extos.path.splitext(filepath)[1].lower()handlers{.xlsx:handle_excel,.xls:handle_excel,.csv:handle_csv,.pdf:handle_pdf,.png:handle_image,.jpg:handle_image,}handlerhandlers.get(ext)ifhandler:try:handler(filepath)log(f✓ 已处理:{filepath})exceptExceptionase:log(f✗ 处理失败:{filepath}, 错误:{e})move_to_error(filepath)else:log(f⚠️ 不支持的文件类型:{ext})move_to_unknown(filepath)影刀集成方式watchdog是持续运行的适合独立部署。如果只在影刀流程中临时使用可以改用定时轮询importosimporttime WATCH_DIRD:/待处理/PROCESSED_DIRD:/已处理/defpoll_and_process():影刀每30秒调用一次filesos.listdir(WATCH_DIR)forfilenameinfiles:filepathos.path.join(WATCH_DIR,filename)# 跳过正在写入的文件大小还在变化try:size1os.path.getsize(filepath)time.sleep(1)size2os.path.getsize(filepath)ifsize1!size2:continue# 还在写入中except:continueprocess_file(filepath)os.rename(filepath,os.path.join(PROCESSED_DIR,filename))# 影刀定时任务每30秒调一次poll_and_process()踩坑实录坑1watchdog在Windows上的路径Windows路径用反斜杠watchdog内部可能处理不好。统一用正斜杠或os.path.normpath()watch_diros.path.normpath(D:/待处理文件/)temu店群自动化报活动案例坑2某些程序写文件会创建临时文件Word保存文件时先写一个~$文件名.docx的临时文件再重命名。你的监控要忽略~$开头的临时文件ifos.path.basename(filepath).startswith(~$):return# 忽略临时文件![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/e6df020dcc994d60a9e3722d75bfc79c.png#pic_center)坑3observer线程和影刀主流程冲突如果把watchdog启动在影刀的Python代码块里observer.start()后代码就卡住了。解决办法在单独的Python脚本中运行影刀通过文件/数据库与之通信。坑4文件权限刚创建的文件可能被其他程序锁定比如Excel正在打开此时重命名或删除会失败。加try/except处理文件占用try:os.rename(filepath,archive_path)exceptPermissionError:print(f文件被占用稍后重试:{filepath})写在最后文件夹监控让影刀从定时拉取变成事件驱动——不用每分钟查询一次文件一来就处理。用轮询方案简单稳定适合影刀内置集成用watchdog方案适合高实时性独立运行场景。
延伸阅读

更多相关文章

2026/9/5 17:52:08

UE Niagara性能分析实战:从工具使用到移动端特效优化全解析

1. 项目概述:为什么Niagara性能分析是UE开发者的必修课在虚幻引擎(UE)的视觉特效开发中,Niagara系统以其强大的粒子模拟能力和灵活的模块化设计,已经成为制作复杂视觉效果的绝对主力。无论是电影级的爆炸、烟雾&#x…

2026/9/8 20:50:06

升压型DC/DC转换器PCB布局设计与噪声优化

1. 升压型DC/DC转换器PCB布局的核心挑战升压型DC/DC转换器的PCB布局直接影响电源系统的效率、稳定性和EMI性能。与降压型转换器不同,升压拓扑中存在着更高的di/dt和dv/dt变化率,这会导致更显著的开关噪声和电磁干扰问题。在实际项目中,我曾遇…

2026/9/9 13:39:40

Pandas与Dask协同实践:单机与分布式计算的边界延展

1. 为什么今天还在聊 Pandas 和 Dask?——一个老手的真实困惑与清醒选择你是不是也经历过这样的深夜:Jupyter Notebook 里跑着一个 8GB 的 CSV 文件,pd.read_csv()卡了三分钟没反应,内存使用率飙到 97%,风扇声像直升机…

2026/9/10 2:11:12

CANN/ge:算子编译缓存保留比例环境变量指南

ASCEND_REMAIN_CACHE_SIZE_RATIO 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyT…

2026/9/10 2:11:12

CANN/GE算子编译缓存空间配置指南

ASCEND_MAX_OP_CACHE_SIZE 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、…

2026/9/10 2:11:11

CodeLlama-34B-Test:专为测试工程原生设计的大模型

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/10 2:11:11

企业数据备份落地方案:从RPO/RTO到恢复演练的实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/9 13:11:35

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/8 7:15:15

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/9 10:21:54

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码