影刀RPA 文件批量重命名与分类整理自动化
影刀RPA 文件批量重命名与分类整理自动化作者林焱什么情况用电脑用久了文件夹里乱七八糟——下载的文件没改名、照片按相机编号命名、同事发来的文件命名规则不统一。想整理又觉得几百个文件手动改太费劲。用RPA做文件整理效率惊人一键把IMG_20240626_143022.jpg改成2024-06-26_产品拍摄.jpg把PDF按日期分类到不同文件夹把文件名乱码的统一编码修正。核心场景批量文件操作——重命名、分类归档、格式转换、文件信息提取。拼多多店群自动化报活动上架怎么做第一步安全的批量重命名——先预览再执行importosimportrefromdatetimeimportdatetimefrompathlibimportPathclassFileRenamer:安全批量重命名——先预览确认后执行def__init__(self):self.plan[]# 重命名计划(原路径, 新路径)defadd_rule_replace(self,folder,old_str,new_str):规则1替换文件名中的字符串forfinos.listdir(folder):ifold_strinf:old_pathos.path.join(folder,f)new_namef.replace(old_str,new_str)new_pathos.path.join(folder,new_name)self.plan.append((old_path,new_path))defadd_rule_prefix(self,folder,prefix,sep_):规则2添加前缀forfinos.listdir(folder):old_pathos.path.join(folder,f)ifos.path.isfile(old_path):new_pathos.path.join(folder,f{prefix}{sep}{f})self.plan.append((old_path,new_path))defadd_rule_date_from_exif(self,folder): 规则3从照片EXIF信息中提取日期重命名为拍照日期 适用于手机/相机拍的照片 fromPILimportImagefromPIL.ExifTagsimportTAGSforfinos.listdir(folder):ifnotf.lower().endswith((.jpg,.jpeg,.png)):continueold_pathos.path.join(folder,f)try:imgImage.open(old_path)exifimg._getexif()ifexif:fortag_id,valueinexif.items():tag_nameTAGS.get(tag_id,tag_id)iftag_nameDateTimeOriginal:# value格式: 2024:06:26 14:30:22date_partvalue.replace(:,-)[:10]time_partvalue[11:].replace(:,)extos.path.splitext(f)[1]new_namef{date_part}_{time_part}{ext}new_pathos.path.join(folder,new_name)self.plan.append((old_path,new_path))breakexcept:passdefadd_rule_datetime(self,folder,patternr.*):规则4按文件修改时间重命名forfinos.listdir(folder):ifnotre.match(pattern,f):continueold_pathos.path.join(folder,f)mtimeos.path.getmtime(old_path)dtdatetime.fromtimestamp(mtime)extos.path.splitext(f)[1]new_namef{dt.strftime(%Y%m%d_%H%M%S)}{ext}new_pathos.path.join(folder,new_name)self.plan.append((old_path,new_path))defadd_rule_serial_number(self,folder,prefixfile,start_num1,extNone):规则5按序号重命名 file_001, file_002, ...files[fforfinos.listdir(folder)ifos.path.isfile(os.path.join(folder,f))]files.sort()fori,finenumerate(files):old_pathos.path.join(folder,f)old_extos.path.splitext(f)[1]ifextisNoneelseext new_namef{prefix}_{start_numi:03d}{old_ext}new_pathos.path.join(folder,new_name)self.plan.append((old_path,new_path))defpreview(self):预览重命名计划print(f\n 重命名预览共{len(self.plan)}个文件)forold,newinself.plan[:20]:# 只显示前20个print(f{os.path.basename(old)}→{os.path.basename(new)})iflen(self.plan)20:print(f ... 还有{len(self.plan)-20}个文件)print(f\n)defexecute(self):执行重命名ifnotself.plan:print(没有需要重命名的文件)return# 安全检查目标文件是否已存在conflicts[]forold,newinself.plan:ifos.path.exists(new)andold!new:conflicts.append((old,new))ifconflicts:print(f⚠️ 有{len(conflicts)}个文件目标名已存在请处理后再执行)forold,newinconflicts[:5]:print(f{os.path.basename(new)}已存在)returnsuccess0forold,newinself.plan:try:os.rename(old,new)success1exceptExceptionase:print(f重命名失败{old}→{e})print(f完成{success}/{len(self.plan)}个文件重命名)self.plan[]# 使用renamerFileRenamer()renamer.add_rule_replace(./downloads,副本,copy)renamer.add_rule_serial_number(./photos,prefixphoto,start_num1)renamer.preview()# renamer.execute() # 确认无误后再执行第二步智能分类归档classFileClassifier:文件分类归档# 文件类型映射TYPE_MAP{图片:[.jpg,.jpeg,.png,.gif,.bmp,.webp,.svg],文档:[.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt],压缩包:[.zip,.rar,.7z,.tar,.gz],视频:[.mp4,.avi,.mov,.mkv,.wmv],音频:[.mp3,.wav,.flac,.aac],代码:[.py,.js,.html,.css,.json,.xml,.sql],安装包:[.exe,.msi,.dmg,.apk],}classmethoddefclassify_by_type(cls,source_dir,target_dir,copyFalse):按文件类型分类到子文件夹importshutil stats{}forfinos.listdir(source_dir):src_pathos.path.join(source_dir,f)ifnotos.path.isfile(src_path):continueextos.path.splitext(f)[1].lower()# 确定分类category其他forcat_name,extensionsincls.TYPE_MAP.items():ifextinextensions:categorycat_namebreak# 目标文件夹dest_diros.path.join(target_dir,category)os.makedirs(dest_dir,exist_okTrue)dest_pathos.path.join(dest_dir,f)# 处理重名ifos.path.exists(dest_path):name,extos.path.splitext(f)dest_pathos.path.join(dest_dir,f{name}_dup{ext})ifcopy:shutil.copy2(src_path,dest_path)else:shutil.move(src_path,dest_path)stats[category]stats.get(category,0)1print(分类完成)forcat,countinstats.items():print(f{cat}:{count}个文件)classmethoddefclassify_by_date(cls,source_dir,target_dir,date_format%Y-%m):按文件修改日期分类到 年-月 文件夹importshutilforfinos.listdir(source_dir):src_pathos.path.join(source_dir,f)ifnotos.path.isfile(src_path):continuemtimeos.path.getmtime(src_path)date_folderdatetime.fromtimestamp(mtime).strftime(date_format)dest_diros.path.join(target_dir,date_folder)os.makedirs(dest_dir,exist_okTrue)shutil.move(src_path,os.path.join(dest_dir,f))print(f已按日期分类到{target_dir})第三步查找重复文件importhashlibdeffind_duplicate_files(folder,deleteFalse): 查找重复文件基于MD5哈希 hash_map{}duplicates[]forroot,dirs,filesinos.walk(folder):forfinfiles:filepathos.path.join(root,f)try:withopen(filepath,rb)asfp:file_hashhashlib.md5(fp.read()).hexdigest()file_sizeos.path.getsize(filepath)key(file_hash,file_size)# 哈希大小双重确认ifkeyinhash_map:duplicates.append({original:hash_map[key],duplicate:filepath,size_mb:file_size/(1024*1024)})else:hash_map[key]filepathexcept(IOError,PermissionError)ase:pass# 生成报告total_wastedsum(d[size_mb]fordinduplicates)print(f发现{len(duplicates)}组重复文件可释放{total_wasted:.1f}MB)returnduplicates第四步文件名编码修复从Windows传文件到Mac或者从浏览器下载文件中文文件名偶尔会乱码。deffix_filename_encoding(folder): 修复常见文件名乱码问题 例飞书文档 → 飞书文档 fixed_count0forfinos.listdir(folder):old_pathos.path.join(folder,f)# 尝试多种编码修复repairedftry:# UTF-8被当成Latin-1解码repairedf.encode(latin-1).decode(utf-8)except:try:![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/d541d006136e48efa7ae023cfe16fa09.png#pic_center)# GBK被当成Latin-1解码repairedf.encode(latin-1).decode(gbk)except:continueifrepaired!f:new_pathos.path.join(folder,repaired)try:os.rename(old_path,new_path)fixed_count1except:passprint(f修复了{fixed_count}个乱码文件名)有什么坑坑1重命名覆盖警告不够明显如果有两个文件会被改成同一个名字第一个改完第二个会覆盖第一个。数据就丢了。解决方法execute()之前必须preview()检查是否有冲突。冲突时自动在文件名后加序号。TEMU店群矩阵自动化运营核价报活动坑2文件被占用无法重命名文件被其他程序打开时比如Excel打开着那个文件os.rename会报PermissionError。解决方法捕获异常跳过被占用的文件最后列出跳过的文件清单。坑3超长路径问题Windows对路径长度有260字符的限制如果文件夹层级很深路径可能超长而操作失败。解决方法用\\?\\前缀启用长路径支持或者先缩短路径。坑4预览时没问题执行时秒变灾难批量重命名是个不可逆操作一旦执行错了几百个文件改回去就麻烦了。解决方法养成习惯——每次重命名前记录一个rename_log.json保存所有原路径→新路径的映射以便回滚。总结文件批量操作的铁律——先预览、后执行、留备份。os.renameshutil.move组合可以搞定90%的文件整理需求。关键是形成安全检查的习惯别自信到跳过预览直接执行。

相关新闻

HarmonyOS7多行文字跑马灯实战:多文本块排布与滚动

HarmonyOS7多行文字跑马灯实战:多文本块排布与滚动

文章目录前言先看这个页面解决了什么问题页面结构速览关键状态是怎么组织的业务逻辑最值得看的函数第一段重点代码:状态与数据入口第二段重点代码:核心交互逻辑使用方法:把页面跑起来之后怎么操作这个实现为什么值得借鉴可以继续优化的地方完…

2026/8/11 20:17:51 阅读更多 →
Vue 2 迁移到 Vue 3 时的 v-model 语法不兼容 问题,警告 Extraneous non-props attributes (modelValue)

Vue 2 迁移到 Vue 3 时的 v-model 语法不兼容 问题,警告 Extraneous non-props attributes (modelValue)

[Vue warn]: Extraneous non-props attributes (modelValue) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. 这个警告的原因是 Vue 3 中 v-model 的语法变化与组件存在多根节点(Frag…

2026/8/12 8:14:02 阅读更多 →
C++并查集实现与优化:从原理到面试实战

C++并查集实现与优化:从原理到面试实战

1. 项目概述:为什么并查集是面试官的“心头好”?如果你刷过一些算法题,或者正在准备技术面试,大概率会碰到“朋友圈”、“岛屿数量”、“连通网络的操作次数”这类题目。乍一看,它们可能涉及图论、搜索,但老…

2026/8/13 7:16:21 阅读更多 →

最新新闻

洛雪音乐自定义解析源 lx-source:3 步搭建你的专属音乐解析服务

洛雪音乐自定义解析源 lx-source:3 步搭建你的专属音乐解析服务

洛雪音乐自定义解析源 lx-source:3 步搭建你的专属音乐解析服务 【免费下载链接】lx-source lx-music-custom-source 洛雪音乐自定义解析源 项目地址: https://gitcode.com/gh_mirrors/lx/lx-source 你是不是也有过这样的困扰:喜欢的歌分散在酷狗…

2026/8/13 12:11:43 阅读更多 →
判别式语言模型检索器:融合双塔与生成式优势,实现动态文本精准匹配

判别式语言模型检索器:融合双塔与生成式优势,实现动态文本精准匹配

1. 先搞清楚这篇论文到底解决了检索领域的哪个核心痛点 如果你正在做搜索、推荐或者任何需要从海量候选池里快速找到目标内容的系统,那么这篇关于“判别式语言模型作为检索器”的论文,值得你花时间仔细看看。它讨论的不是一个花哨的新功能,而…

2026/8/13 12:11:43 阅读更多 →
MySQL索引查看与优化实战:从SHOW INDEX到EXPLAIN的完整指南

MySQL索引查看与优化实战:从SHOW INDEX到EXPLAIN的完整指南

1. 项目概述:为什么我们需要“看见”索引刚接触MySQL那会儿,我总觉得索引这东西挺“玄学”的。建表时随手加个索引,查询时确实快了,但有时候又发现它没起作用,甚至拖慢了写入速度。后来踩坑多了才明白,索引…

2026/8/13 12:11:43 阅读更多 →
金融交易中间件核心技术解析与应用实践

金融交易中间件核心技术解析与应用实践

1. 交易中间件的定义与核心价值 交易中间件(Transaction Middleware)是金融科技领域的基础设施级软件,它如同金融交易的高速公路,负责在异构系统间可靠传输交易指令和数据。这类软件需要满足三个核心特性:高吞吐&#…

2026/8/13 12:11:43 阅读更多 →
C语言爱心代码:从数学方程到动态图形,掌握编程核心思想

C语言爱心代码:从数学方程到动态图形,掌握编程核心思想

1. 项目概述:当代码遇上浪漫 如果你在搜索引擎里敲下“C语言爱心代码”,大概率会看到满屏的星号(*)和空格组成的简单图案。很多人觉得这不过是初学者的小把戏,打印个心形就算完事。但作为一个写了十几年C语言的老码农&…

2026/8/13 12:11:43 阅读更多 →
Python网络爬虫实战:从天眼查高效采集企业数据的技术解析

Python网络爬虫实战:从天眼查高效采集企业数据的技术解析

1. 项目概述与核心价值 最近在做一个市场分析项目,需要批量获取一批目标公司的工商信息、股东构成和经营状况。手动去查?几百家公司,光是复制粘贴就能把人逼疯。这时候,网络爬虫就成了我的“救命稻草”,而天眼查作为国…

2026/8/13 12:10:42 阅读更多 →

日新闻

Visual Studio新建项目解决方案为空:系统性排查与修复指南

Visual Studio新建项目解决方案为空:系统性排查与修复指南

1. 问题现象与本质剖析如果你是一位.NET开发者,或者正准备踏入这个领域,那么Visual Studio(后面简称VS)绝对是你绕不开的伙伴。但有时候,这个伙伴会跟你开一个不大不小的玩笑:你满怀期待地点击“创建新项目…

2026/8/13 0:00:09 阅读更多 →
长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

说实话,每次提起“长春建设厅网站”这几个字,我心里都挺有感触的。不是因为它有多高大上,也不是因为那里藏着什么不可告人的秘密,恰恰相反,是因为它太“接地气”了,或者说,它是咱们普通人想要在这个城市好好生活、安稳买房时,必须得翻过的一座“数据山”。很多新朋友第…

2026/8/13 0:00:09 阅读更多 →
Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 你是否曾为Windows家庭版无法支持多用户远程桌面…

2026/8/13 0:00:09 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/13 10:41:50 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/13 10:41:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/13 10:41:49 阅读更多 →