当前位置: 首页 > news >正文

影刀RPA 临时文件管理:创建与清理

影刀RPA 临时文件管理:创建与清理

作者:林焱

什么情况用什么

自动化流程运行中会产生临时文件——中间结果、下载的临时文件、处理过程的缓存。这些文件不及时清理会占满磁盘空间,但又不能在流程结束前删掉(因为还在用)。在影刀RPA里需要合理管理临时文件的创建、使用和清理。

适用场景:流程中间文件管理、下载缓存清理、系统临时文件清理、磁盘空间监控。

怎么做

拼多多店群自动化报活动上架!

创建临时文件


importosimporttempfileimportuuidfromdatetimeimportdatetime# 方式1:用tempfile模块(推荐)defcreate_temp_file(suffix='.tmp',content=None):"""创建临时文件"""fd,filepath=tempfile.mkstemp(suffix=suffix)ifcontent:withos.fdopen(fd,'w',encoding='utf-8')asf:f.write(content)else:os.close(fd)returnfilepath# 方式2:在指定目录创建带时间戳的临时文件defcreate_temp_in_dir(temp_dir,prefix='temp',suffix='.xlsx'):"""在指定目录创建临时文件"""os.makedirs(temp_dir,exist_ok=True)timestamp=datetime.now().strftime('%Y%m%d_%H%M%S')unique_id=uuid.uuid4().hex[:8]filename=f"{prefix}_{timestamp}_{unique_id}{suffix}"filepath=os.path.join(temp_dir,filename)returnfilepath# 使用temp_file=create_temp_file(suffix='.json',content='{"status": "processing"}')temp_excel=create_temp_in_dir(r"C:\Temp",prefix='report',suffix='.xlsx')

临时文件管理器

classTempFileManager:"""临时文件管理器"""def__init__(self,base_dir=None):ifbase_dirisNone:base_dir=os.path.join(tempfile.gettempdir(),'yingdao_rpa')self.base_dir=base_dir os.makedirs(base_dir,exist_ok=True)self.files=[]defcreate(self,prefix='temp',suffix='.tmp',content=None):"""创建临时文件"""timestamp=datetime.now().strftime('%Y%m%d_%H%M%S')filename=f"{prefix}_{timestamp}_{uuid.uuid4().hex[:6]}{suffix}"filepath=os.path.join(self.base_dir,filename)ifcontent:withopen(filepath,'w',encoding='utf-8')asf:f.write(content)else:# 创建空文件open(filepath,'w').close()self.files.append(filepath)returnfilepathdefcleanup(self):"""清理所有临时文件"""cleaned=0forfilepathinself.files:try:ifos.path.exists(filepath):ifos.path.isfile(filepath):os.remove(filepath)elifos.path.isdir(filepath):importshutil shutil.rmtree(filepath)cleaned+=1exceptExceptionase:print(f"清理失败:{filepath}-{e}")self.files.clear()print(f"已清理{cleaned}个临时文件")returncleaneddefcleanup_old(self,max_age_hours=24):"""清理超过指定时间的临时文件"""importtime cutoff=time.time()-max_age_hours*3600cleaned=0forfinos.listdir(self.base_dir):filepath=os.path.join(self.base_dir,f)ifos.path.isfile(filepath):mtime=os.path.getmtime(filepath)ifmtime<cutoff:os.remove(filepath)cleaned+=1print(f"清理{cleaned}个超期临时文件")returncleaned# 使用manager=TempFileManager(r"C:\Temp\RPA")# 流程中创建临时文件temp1=manager.create(prefix='download',suffix='.xlsx')temp2=manager.create(prefix='process',suffix='.csv')# ... 使用临时文件 ...# 流程结束时清理manager.cleanup()

系统临时文件清理

defclean_system_temp():"""清理系统临时文件夹"""temp_dirs=[os.environ.get('TEMP',r'C:\Users\Public\Temp'),os.environ.get('TMP',r'C:\Users\Public\Temp'),r"C:\Windows\Temp",]total_cleaned=0total_freed=0fortemp_dirintemp_dirs:ifnotos.path.exists(temp_dir):continueforfinos.listdir(temp_dir):filepath=os.path.join(temp_dir,f)try:ifos.path.isfile(filepath):size=os.path.getsize(filepath)os.remove(filepath)total_cleaned+=1total_freed+=sizeelifos.path.isdir(filepath):importshutil size=get_dir_size(filepath)shutil.rmtree(filepath,ignore_errors=True)total_cleaned+=1total_freed+=sizeexcept:pass# 跳过无法删除的文件print(f"清理临时文件:{total_cleaned}个")print(f"释放空间:{total_freed/1024/1024:.1f}MB")returntotal_cleaned,total_freeddefget_dir_size(path):"""获取目录大小"""total=0fordirpath,_,filesinos.walk(path):forfinfiles:try:total+=os.path.getsize(os.path.join(dirpath,f))except:passreturntotal

磁盘空间监控

importshutilasshdefcheck_disk_space(path='C:\\'):"""检查磁盘空间"""total,used,free=sh.disk_usage(path)result={'磁盘':path,'总空间(GB)':round(total/1024**3,1),'已用(GB)':round(used/1024**3,1),'可用(GB)':round(free/1024**3,1),'使用率':f"{used/total*100:.1f}%",}fork,vinresult.items():![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/94e099cde9f34cba8c7891dd4941a68e.png#pic_center)print(f"{k}:{v}")# 空间不足预警free_gb=free/1024**3iffree_gb<5:print(f"\n⚠ 警告:磁盘可用空间不足5GB!")returnresult# 使用check_disk_space('C:\\')check_disk_space('D:\\')

影刀RPA临时文件管理流程

【流程开始】 【执行Python代码】 # 创建临时文件管理器 manager = TempFileManager(r"C:\Temp\RPA") yd_var['temp_manager'] = manager 【下载文件】→ manager.create(prefix='download', suffix='.xlsx') 【处理数据】→ 产生中间文件 【生成报表】→ 最终输出 【流程结束前】 【执行Python代码】 # 清理临时文件 manager.cleanup() # 检查磁盘空间 check_disk_space('C:\\')

有什么坑

TEMU店群矩阵自动化运营核价报活动

坑1:流程异常退出临时文件残留

# 问题:流程中途出错,临时文件没清理# 解决:用try-finally确保清理manager=TempFileManager()try:temp_file=manager.create(suffix='.xlsx')# ... 处理逻辑 ...finally:manager.cleanup()# 无论成功失败都清理# 或在流程开始时先清理上次残留manager=TempFileManager()manager.cleanup_old(max_age_hours=1)# 清理1小时前的

坑2:删除正在使用的临时文件

# 问题:Excel文件正被打开,删除失败# 解决:先关闭再删除defsafe_delete(filepath,max_retries=3):"""安全删除文件"""importtimeforiinrange(max_retries):try:ifos.path.exists(filepath):os.remove(filepath)returnTrueexceptPermissionError:time.sleep(1)print(f"无法删除(可能被占用):{filepath}")returnFalse

坑3:临时文件名冲突

# 问题:多个流程同时运行,临时文件名相同# 解决:用UUID确保唯一filename=f"temp_{uuid.uuid4().hex}{suffix}"# 或用时间戳+进程ID![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/789f17f682eb474cb87a4f8eb604e795.png#pic_center)importos filename=f"temp_{datetime.now().strftime('%Y%m%d_%H%M%S')}_{os.getpid()}{suffix}"

坑4:Temp目录在不同电脑上路径不同

# 问题:硬编码C:\Temp在没这个目录的电脑上报错# 解决:用系统临时目录temp_dir=tempfile.gettempdir()# 或temp_dir=os.environ.get('TEMP',os.environ.get('TMP','/tmp'))

坑5:清理时误删重要文件

# 问题:清理临时目录时把不该删的文件也删了# 解决:只清理特定前缀的文件SAFE_PREFIX='yingdao_'# 只清理这个前缀的defsafe_cleanup(temp_dir,prefix=SAFE_PREFIX):"""安全清理(只删指定前缀的文件)"""![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/c2933d316c6e41f29212caa84e5a77ed.png#pic_center)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/13b805a1b2824b779f6ac1a6013542b8.png#pic_center)forfinos.listdir(temp_dir):iff.startswith(prefix):filepath=os.path.join(temp_dir,f)os.remove(filepath)print(f" 删除:{f}")# 不匹配前缀的文件不动
http://www.jsqmd.com/news/1166085/

相关文章:

  • Claude Code细粒度权限控制落地实践(零信任架构下的最小权限演进图谱)
  • S-R与D锁存器Verilog建模实战:3种电路结构对比与亚稳态规避
  • docker pull docker.1ms.run/library/alpine:3.20如何加速下载
  • 2026年深圳学员CPPM报名资料清单——众智商学院张明老师报考材料准备指南 - 中研供应链官方
  • Node.js 18.x 环境配置:Windows/Linux 双平台安装与 npm 版本验证 3 要点
  • NVME-oF IP 设计1 :为什么要设计它?
  • 虚幻引擎与MA2灯光控制台联动:环回网络配置与Art-Net通信全解析
  • 亲身到店探访海口亨得利官方名表服务中心|服务电话及全部地址(2026年7月更新) - 亨得利官方
  • 如何快速将STL转为STEP:零依赖转换工具完全指南
  • 跨省寄快递怎么选最省钱?2026实测对比 - 快递物流资讯
  • 3D打印模型版权,该被重视了!
  • 5步解锁Office完整功能:零风险激活Microsoft 365的智能方案
  • EMS失控功率与功率重分配功能
  • 深耕工业特种线缆 25 年|东莞市怡沃达电缆:国产高柔电缆进口替代标杆企业
  • 跨省寄大件怎么省钱?试试这3招,直接省一半 - 快递物流资讯
  • 2026 年新发布:青白江知名的石墨烯发热板优质厂家哪家可靠,熬夜党自救指南:它如何改变你的睡眠质量? - 行业甄选官
  • 如何快速实现跨平台音乐解密:开源工具的终极指南
  • 亲身到店探访合肥亨得利官方名表服务中心|网点地址和官方热线(2026年7月更新) - 亨得利官方
  • UE游戏逆向实战:从内存追踪到控件对象定位的完整路径
  • 2026嘉兴AI搜索优化服务商评测:谁是企业GEO最佳拍档? - 品牌报告
  • Nano-Banana Pro:面向生物医学科研的可复现矢量绘图工作流
  • 2026年最新教程:图片格式转换小程序怎么选?亲测好用的免费方法 - 玩机日常
  • 如何轻松设计你的梦幻岛屿?Happy Island Designer 让创意可视化变得简单
  • WSL2 Mirrored 模式下 Synopsys License 启动失败:localhost 路由异常修复记录
  • SSD1306 0.96寸OLED I2C/SPI 3种通信协议对比:4线 vs 7线 vs 8线并行
  • 梯形速度曲线规划 MATLAB 2023b 仿真:从公式到 3 段轨迹生成与可视化
  • 2026年7月最新亨得利官方钟表服务中心|全新电话和网点地址权威信息通告 - 亨得利官方博客
  • 2026年7月最新亨得利官方钟表服务中心|详细地址及客服热线权威信息通告 - 亨得利官方博客
  • AI工具在电影前期制作中的应用:概念设计、预览生成与镜头生成实战
  • 2026年SCMP和CPPM先考哪个?众智商学院张明老师双证报考对比和建议 - 中研供应链官方