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

影刀RPA Python节点中操作文件系统:读写文件、遍历目录、压缩解压

影刀RPA Python节点中操作文件系统:读写文件、遍历目录、压缩解压

影刀的文件操作动作覆盖了基本的创建/复制/删除/移动。但遇到复杂场景——递归遍历子目录、按文件大小筛选、批量重命名、压缩解压——就得靠Python节点了。

这篇文章给出文件系统操作的标准代码片段,每一段都能直接拷过去用。


遍历目录

列出所有文件(含子目录)

importos folder=r'C:\RPA_data\reports'all_files=[]forroot,dirs,filesinos.walk(folder):forfilenameinfiles:full_path=os.path.join(root,filename)all_files.append({'path':full_path,![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/ab49f2de7506479185c019d71d639b73.png#pic_center)'name':filename,'folder':root,'size':os.path.getsize(full_path),'modified':os.path.getmtime(full_path),})print(f'共找到{len(all_files)}个文件')

只列出特定类型

importosimportglob# 方法1:glob模式匹配excel_files=glob.glob(r'C:\RPA_data\**\*.xlsx',recursive=True)# 方法2:手动过滤forroot,dirs,filesinos.walk(folder):forfinfiles:iff.endswith(('.xlsx','.xls')):# 处理Excel文件pass

按文件修改时间筛选

拼多多店群自动化上架方案

importosimporttime# 找最近24小时修改过的文件now=time.time()recent_files=[]![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/9f577daaa92c4524886017dd14996980.png#pic_center)forroot,dirs,filesinos.walk(folder):forfinfiles:path=os.path.join(root,f)ifnow-os.path.getmtime(path)<86400:# 24小时 = 86400秒recent_files.append(path)

文件读写

文本文件

# 读withopen(r'C:\data\log.txt','r',encoding='utf-8')asf:content=f.read()# 逐行读(大文件)withopen(r'C:\data\log.txt','r',encoding='utf-8')asf:forlineinf:print(line.strip())# 写(覆盖)withopen(r'C:\data\output.txt','w',encoding='utf-8')asf:f.write('第一行\n')f.write('第二行\n')# 追加withopen(r'C:\data\log.txt','a',encoding='utf-8')asf:f.write('新的一行\n')

JSON文件

importjson# 读withopen(r'C:\data\config.json','r',encoding='utf-8')asf:config=json.load(f)# 写data={'name':'张三','orders':[1,2,3]}withopen(r'C:\data\output.json','w',encoding='utf-8')asf:json.dump(data,f,ensure_ascii=False,indent=2)

文件批量处理

批量重命名

importos folder=r'C:\RPA_data\images'fori,filenameinenumerate(os.listdir(folder),1):iffilename.endswith('.png'):old_path=os.path.join(folder,filename)new_name=f'product_{i:04d}.png'# product_0001.pngnew_path=os.path.join(folder,new_name)os.rename(old_path,new_path)print(f'{filename}{new_name}')

批量移动文件(按条件分类)

importosimportshutil source=r'C:\RPA_data\incoming'dest_excel=r'C:\RPA_data\excel_files'dest_images=r'C:\RPA_data\images'dest_others=r'C:\RPA_data\others'os.makedirs(dest_excel,exist_ok=True)os.makedirs(dest_images,exist_ok=True)os.makedirs(dest_others,exist_ok=True)forfilenameinos.listdir(source):src=os.path.join(source,filename)ifnotos.path.isfile(src):continueiffilename.endswith(('.xlsx','.xls')):shutil.move(src,os.path.join(dest_excel,filename))eliffilename.endswith(('.png','.jpg','.jpeg')):shutil.move(src,os.path.join(dest_images,filename))else:shutil.move(src,os.path.join(dest_others,filename))

压缩与解压

压缩文件/文件夹

importzipfileimportosdefzip_folder(folder_path,output_path):"""压缩整个文件夹"""withzipfile.ZipFile(output_path,'w',zipfile.ZIP_DEFLATED)aszf:forroot,dirs,filesinos.walk(folder_path):forfileinfiles:file_path=os.path.join(root,file)arcname=os.path.relpath(file_path,folder_path)zf.write(file_path,arcname)print(f'压缩完成:{output_path}')defzip_files(file_list,output_path):"""压缩指定文件列表"""withzipfile.ZipFile(output_path,'w',zipfile.ZIP_DEFLATED)aszf:forfilepathinfile_list:zf.write(filepath,os.path.basename(filepath))print(f'压缩完成:{output_path}{len(file_list)}个文件)')# 使用zip_folder(r'C:\RPA_data\reports',r'C:\RPA_data\reports_backup.zip')

解压

importzipfiledefunzip_file(zip_path,extract_to):"""解压zip文件"""withzipfile.ZipFile(zip_path,'r')aszf:zf.extractall(extract_to)[video(video-GZQFjvBh-1783622761443)(type-csdn)(url-https://live.csdn.net/v/embed/524993)(image-https://v-blog.csdnimg.cn/asset/a547123d88ad712dccba346c9217e237/cover/Cover0.jpg)(title-TEMU店群如何管理运营?)]# 列出解压的文件withzipfile.ZipFile(zip_path,'r')aszf:print(f'解压了{len(zf.namelist())}个文件到{extract_to}')unzip_file(r'C:\RPA_data\data.zip',r'C:\RPA_data\extracted')

文件夹操作

importosimportshutil# 创建嵌套目录os.makedirs(r'C:\RPA_data\2026\07\01',exist_ok=True)# 复制文件夹(含所有内容)shutil.copytree(r'C:\RPA_data\source',r'C:\RPA_data\backup')# 删除文件夹(含所有内容)shutil.rmtree(r'C:\RPA_data\temp')![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/98f55d164ba7427aadc21857f233cad6.png#pic_center)# 获取文件夹大小defget_folder_size(folder):total=0forroot,dirs,filesinos.walk(folder):forfinfiles:total+=os.path.getsize(os.path.join(root,f))returntotal size_mb=get_folder_size(r'C:\RPA_data')/(1024*1024)print(f'文件夹大小:{size_mb:.2f}MB')

文件清理(安全版)

importosimporttimedefsafe_cleanup(folder,days_old=30,dry_run=True):"""清理N天之前的文件(dry_run=True只列不删)"""now=time.time()cutoff=now-days_old*86400to_delete=[]forroot,dirs,filesinos.walk(folder):forfinfiles:path=os.path.join(root,f)ifos.path.getmtime(path)<cutoff:to_delete.append(path)print(f'将清理{len(to_delete)}个文件({days_old}天前):')forpathinto_delete[:10]:# 只显示前10个print(f'{path}')ifnotdry_runandto_delete:print(f'开始删除...')forpathinto_delete:try:os.remove(path)exceptExceptionase:print(f' 删除失败:{path}{e}')print('清理完成')# 先做一次dry_run看看要删什么safe_cleanup(r'C:\RPA_data\temp',days_old=7,dry_run=True)# 确认OK后正式清理# safe_cleanup(r'C:\RPA_data\temp', days_old=7, dry_run=False)

dry_run=True的安全机制是推荐的——先看一遍要删什么,确认没删错再正式执行。


总结:文件系统操作在Python里就是osshutilzipfile三个模块的事。遍历用os.walk,移动用shutil.move/copy,压缩用zipfile。批量操作前先用dry_run模式预览,避免删错。


作者:林焱

http://www.cnnetsun.cn/news/3274717.html

相关文章:

  • rustdesk 1.4.9正式发布:Windows、Ubuntu、Mac、Android、Flatpak、iOS、Web全平台下载一览,新增与修复一次看全
  • 色彩空间与偏色排查:sRGB / Display-P3 / Adobe RGB / CMYK 到底差在哪,为什么同一张图在网页、手机、印刷上颜色不一样
  • 2S锂离子电池组电压平衡方案与BQ25887应用
  • machine 一般公差、未注公差的线性和角度尺寸的公差(GB/T1804-2000)
  • 基于MiniCPM-V的财报智能核验:会计学习自动化实践指南
  • 马斯克Grok 4.5硬刚Claude 4.8!实测代码生成,它真站起来了?
  • 学历证书制作流程藏着多少灰色地带?4个关键问题说清楚
  • 做无人直播总被限流?2026 年 10 款工具实测:这款靠智能进化轻松破解平台新规。
  • 跨境电商独立站搭建实战|从零落地10个核心步骤(含配置代码+技术规范)
  • 双列直插转接件 DIY 实战:手工改造 2.54mm 排针实现 300mil 间距
  • 可灵Kling AI视频生成技术解析:从扩散模型到工程实践
  • Claude Code Routines:CLI命令云端自动化实战指南
  • 2026主流业务数据报表工具对比测评|企业个人工具选型参考
  • 从赛题到产品:数控直流电源的3个关键设计权衡(精度、带载、成本)与实测
  • 小红的正整数构造【牛客tracker 每日一题】
  • B2B 工业设备的 GEO:为什么你的内容 AI 抓不到、也不引用
  • Unity输入系统重构:事件驱动架构与新版Input System实践
  • 自动驾驶常用开源数据集大全:完整大小、OpenDataLab最全仓库及中国大陆高速下载方法
  • 当渐变开始呼吸:CSS @property 注册可动画自定义属性的工程探索
  • 以客户分层运营破增长瓶颈,好客搜 2026 上半年客户服务体系全面升级
  • RAG 检索增强生成技术全景:从基础原理到企业级实践
  • ADP5350与PIC18F46K80构建智能电源管理系统
  • Spring AI vs LangChain4j:Java 做 AI,到底选哪个框架?(2026 最新对比)
  • 如何从零开始制作一台FOC轮腿机器人:开源DIY完整指南 [特殊字符]
  • 如何快速安装Blue Topaz主题:打造专属笔记环境的完整指南
  • STM32F407ZG与MCP3551高精度ADC系统设计与实现
  • OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构)
  • KDNN_torch_adapter完整安装指南:从源码编译到环境配置
  • 【机器人 / 强化学习】DIVL:分布隐式价值学习
  • 性能调优:如何让 uos-dovecot-exporter 监控效率提升 300%