☰
影刀RPA新手教程:文件与文件夹操作实战——批量重命名读写与路径处理
2026/10/8 13:21:24 网站建设 项目流程

影刀RPA新手教程:文件与文件夹操作实战——批量重命名读写与路径处理

有次帮客户采集商品图片,一天下来2000多张,全堆在一个文件夹里,文件名是一串随机字符——IMG_20241123_145632.jpg这种。客户说要按日期+商品名分类,当时我就蒙了。手动整理了一整天,第二天才想到用影刀自动化。从那以后,文件操作成了我最常用的技能之一。

这篇文章用批量整理采集图片做主线,串起文件读写、文件夹操作、批量重命名、路径处理所有知识点。

1. 认识影刀/安装

影刀安装后建议先把文件操作相关的指令浏览一遍,都在指令库的"文件"分类下。常用的就那几个:文件读写、文件重命名、文件删除、文件夹创建、获取文件路径信息。

新手注意:影刀用的是自己的文件操作指令,不走系统cmd命令。虽然也能嵌入Python做文件操作,但简单场景直接用影刀指令更直观。

2. 元素定位(四合一)

文件操作开始前,数据从哪来?从网页来。所以要先学会定位。

F12→Elements面板→Ctrl+F输入XPath测试。六个常用XPath:

  1. //div[@class='product-img']/img——图片元素定位
  2. //span[contains(text(),'价格')]/following-sibling::span——价格元素(同级后面那个span)
  3. //img[contains(@src,'.jpg')]——所有jpg图片
  4. //div[@id='gallery']//img——图库下所有图片
  5. //*[contains(@class,'title') and text()]——有文本的标题元素
  6. //a[contains(@href,'item')][1]——第一个商品链接

CSS选择器取图片:img[src$=".jpg"](以.jpg结尾的img),div.main-img > img:first-child(第一张主图)。

正则表达式在文件名处理里特别有用。提取日期:(\d{8})八位数字匹配年月日。提取商品ID:id=(\d+)。提取图片序号:_\d+\.jpg。

3. 变量与数据类型

文件操作核心变量类型:

字符串——文件路径都是字符串。拼接路径用+或os.path.join(),后者自动处理分隔符。

列表——批量操作时,先把所有文件路径收集到一个列表,再循环处理。采集图片URL列表→循环下载→下载完收集本地路径列表→批量重命名。这个流程我跑了上千次。

字典——文件信息结构化存储:{"原文件名": "IMG_001.jpg", "新文件名": "商品A_主图_001.jpg", "大小": 123456, "日期": "20241123"}。

JSON——复杂文件配置存JSON。采集任务的配置文件:{"保存路径": "D:/商品图片/", "图片前缀": "商品名_", "按日期分文件夹": true}。Python块里json.loads()读取→修改→json.dumps()保存。

4. 流程控制

ForEach列表循环——遍历已下载的文件列表,逐个处理。这个最常用。

For次数循环——已知文件数量时用。比如已经拿到了100个文件路径的列表,ForEach就够了。

While条件循环——监听文件夹变化。有新文件进来就处理,没有就等待。

If条件判断——每个文件操作前判断文件/文件夹是否存在,防止报错。

Try-Catch——文件操作最容易出错:文件被占用、路径不存在、权限不够。每个文件操作都包Try-Catch。

5. 网页自动化——图片批量下载

采集商品图片的完整流程:

  1. 打开商品详情页
  2. 等待图片加载(等待相似元素出现)
  3. 获取所有图片元素的src属性
  4. 循环下载每张图片

等图片加载有个坑:有的网站图片是懒加载的,只有滚动到可见区域才加载。解决:先scrollTo(0, scrollHeight)滚动到底部,等2秒,再抓img的src。

图片URL可能是相对路径://img.alicdn.com/xxx.jpg。下载前要拼接完整的URL前缀。这个我排查了一下午——图片下载指令报了404,后来F12发现src是双斜杠开头的,需要拼https:。

翻页采集多商品时,每翻一页把当页图片都下了,按商品分文件夹。

iframe处理——有的商品图片在iframe里展示(天猫国际、跨境店),要先切换iframe再定位图片元素。

6. 数据处理

文件读写三种格式:

TXT——最简单,直接"读取文件"选文本格式。采集日志、错误记录用TXT。注意编码选UTF-8,不然中文乱码。写入文件时可以选"覆盖写入"或"追加写入",追加写入还能选新行追加。

CSV——轻量表格格式。影刀有专门的CSV读写指令,也可以用Python的csv库。批量写入时先攒数据到列表,一次性写入,比一行写一次快十几倍。

JSON——结构化数据存JSON。影刀里用Python块的json库:import json,json.loads(json字符串)转对象,json.dumps(对象, ensure_ascii=False)保证中文不乱码。

文本清洗——网页采集回来的文本大概率带空格换行符:strip()去两端空格,replace('\n', '')去换行,replace('¥', '')去货币符号。

7. 鼠标键盘图像自动化

批量整理文件时,有些操作需要模拟鼠标键盘:

模拟文件拖拽——某些软件必须通过拖拽方式导入文件。影刀用拖拽指令:指定起始坐标和终点坐标,模拟鼠标左键按下→移动→释放。

图像识别辅助——文件另存为对话框里,"保存"按钮可能不是标准Windows控件。用图像识别:截图保存按钮→wait_appear→click。

8. 进阶技能

Python做文件操作比影刀原生指令更灵活。常用库:

os库——路径处理、文件遍历、文件夹操作。os.listdir(路径)列出所有文件,os.path.exists(路径)判断是否存在,os.makedirs(路径)递归创建文件夹。

shutil库——文件复制移动。shutil.copy(源路径, 目标路径)复制文件,shutil.move(源路径, 目标路径)移动文件,shutil.rmtree(路径)删除文件夹。

我的Python文件操作模板:

importosimportshutil# 获取图片文件夹source_dir=package.variables['图片文件夹']# 创建按日期分类的文件夹date_folder=os.path.join(source_dir,'20241123')ifnotos.path.exists(date_folder):os.makedirs(date_folder)# 批量移动文件forfileinos.listdir(source_dir):iffile.endswith('.jpg'):shutil.move(os.path.join(source_dir,file),os.path.join(date_folder,file))

Python块引用全局变量必须是package.variables['变量名']格式,我一开始直接写变量名报了半天错。

9. 平台实战:淘宝商品图片采集 + 小红书笔记图片采集

淘宝图片整理:

淘宝商品主图的URL规律:https://img.alicdn.com/xxx.jpg或//img.alicdn.com/xxx.jpg。相对路径需要拼接https:。批量下载后按商品ID分文件夹。

流程:

  1. 采集列表页,获取商品ID和标题
  2. 进入每个商品详情页
  3. 获取所有图片URL
  4. 按商品ID_序号.jpg格式下载到D:/商品图片/商品ID/文件夹
  5. 记录下载结果到CSV

小红书笔记图片整理:

小红书笔记的图片没有清晰的文件名,下载下来全是随机字符串。需要按照笔记标题+发布时间重命名。

流程:

  1. 采集笔记标题和发布时间
  2. 循环下载该笔记的图片到临时文件夹
  3. 批量重命名:笔记标题_发布时间_序号.jpg
  4. 按日期移动到归档文件夹

文件重命名的核心:用"获取文件路径信息"指令,先拿到原文件的基本文件名和扩展名,然后拼接新文件名,最后执行"文件重命名"。

10. 系统联动

整理完文件后自动通知:

飞书消息通知——整理完成发送消息"今日共整理商品XX个,图片XX张,已归档至XX文件夹"。用飞书机器人webhook。整理失败也发一条异常消息。

邮件发送——整理结果表格CSV作为附件发送给客户。QQ邮箱SMTP配置:smtp.qq.com,端口587,需要开启POP3/SMTP服务获取授权码。

定时任务——设置每天凌晨2点自动整理前一天的图片。影刀客户端自带定时执行功能。

11. 工程化与规范

文件操作六大原则:

  1. 操作前先判断文件/文件夹是否存在——用if判断,不存在就创建或跳过
  2. 路径用os.path.join拼接——不用字符串硬拼"路径+\文件名",Windows和Mac的分隔符不同
  3. 文件名不要含特殊字符——冒号、问号、星号、尖括号在Windows文件名里非法
  4. 批量操作先存列表再执行——不要边读边写,容易冲突
  5. 每个文件操作包Try-Catch——单个文件操作失败不影响整体
  6. 大文件分批处理——文件数量上万时,每500个处理一批释放内存

路径处理的坑:

Windows反斜杠vs正斜杠——影刀指令接收路径时用正斜杠或双反斜杠都行,但用了单反斜杠就会出问题,因为\n、\t被识别为转义字符。统一用正斜杠最省事。

中文路径——中文路径理论上没问题,但有些老旧系统接口不支持。尽量用英文路径。

路径不存在——用os.path.exists()先判断。创建文件夹用os.makedirs(路径, exist_ok=True),父目录不存在自动创建。

获取文件路径信息的指令返回五个字段:根目录、父目录、文件名、基本文件名、文件扩展名。基本文件名是不含扩展名的部分,扩展名含点号。我常用它来提取基本文件名→拼接新名称→重命名。

子流程封装——把文件操作封装成独立子流程,主流程调用。比如"图片归档子流程"输入源文件夹和目标文件夹,"批量重命名子流程"输入文件夹路径和命名规则。

命名规范——文件夹名用日期+项目名(20241123_淘宝采集),文件名用商品名+序号+类型(商品A_主图_001.jpg)。一看就知道是什么。

12. 速查表/常见报错

文件读写报错"文件不存在"
原因:路径错误或文件已被移动
解决:操作前先os.path.exists()判断

写入文件中文乱码
原因:编码不对
解决:编码选UTF-8,Python写文件时指定encoding='utf-8'

文件重命名报错"文件被占用"
原因:文件正在被其他程序打开
解决:关闭打开该文件的程序后再操作

文件路径报错
原因:下载/上传文件指令路径输入方式问题
解决:检查输入的路径是否有效,改用"模拟人工输入"或"剪切板输入"

文件名超长报错
原因:Windows路径最长260个字符
解决:缩短文件夹名,减少层级,用Python的\\?\前缀绕过限制

删除文件夹失败
原因:文件夹非空
解决:用Python的shutil.rmtree(路径)递归删除

批量重命名序号错乱
原因:循环中用了原序号而非新序号
解决:用列表收集新路径,统一执行重命名

路径拼接错误
原因:多了或少了一个分隔符
解决:用os.path.join()代替字符串拼接

下载文件没有扩展名
原因:Chrome设置为不询问直接下载、未加扩展名或本机未开启显示扩展名
解决:Chrome设置→下载内容→开启下载前询问每个文件的保存位置

图片下载404
原因:URL是相对路径
解决:F12看完整URL,拼接缺失的协议和域名

整理脚本模板:

1. 获取源文件夹路径 2. 列出文件夹内所有文件 3. 循环每个文件: 判断扩展名→按规则分类→移动到对应文件夹→重命名 4. 输出整理结果

影刀文件操作更详细的教程可以去 home.linyan.cloud 看,那里有从入门到高级的完整教程。

#影刀RPA #RPA教程 #新手入门 #文件操作 #批量重命名 #文件夹整理

作者:林焱

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询