影刀RPA新手教程:CSV文件处理完全指南——从读取写入到多文件合并
很多人只用 Excel,但实际工程场景里 CSV 可能更适合。
CSV 的优点:纯文本、兼容性好、不需要 Excel 库、跨平台、被 Git 管理时不产生二进制冲突。
这篇文章把影刀内置指令 + Python 两种方式都讲清楚,你按场景选择。

一、CSV vs Excel,什么时候用 CSV
| 纯数据存储(商品ID、价格、日期) | ✅ | |
| 需要格式(颜色、合并单元格、公式) | ✅ | |
| 大文件(10万行+) | ✅(读写更快) | |
| 与Python/Pandas交互 | ✅(天然支持) | ✅(需要openpyxl) |
| 版本管理(Git) | ✅(可diff) | ❌(二进制) |
| 跨平台传输 | ✅(无编码问题) | ⚠️(格式兼容性) |
实际项目里,我一般这样分配:中间数据存CSV(快),最终报表输出Excel(好看)。

二、影刀内置指令读写 CSV
影刀没有直接的"CSV指令",但可以用"文件读写"配合 Python。
拼多多店群自动化上架方案
读取 CSV
# Python代码指令:读取CSV
import csv
csv_path = r"D:\\数据\\商品清单.csv"
数据列表 = []
with open(csv_path, "r", encoding="utf-8") as f:
reader = csv.reader(f)
标题行 = next(reader) # 第一行是标题
for row in reader:

数据列表.append({
"商品ID": row[0],
"商品名": row[1],
"价格": row[2],
"库存": row[3]
})
# 数据列表现在可以在影刀循环里使用
写入 CSV
# Python代码指令:写入CSV
import csv
数据 = [
["商品ID", "名称", "价格"], # 标题行
["001", "连衣裙", "128"],
["002", "T恤", "89"],
]
with open(r"D:\\数据\\output.csv", "w", encoding="utf-8-sig", newline="") as f:
writer = csv.writer(f)
writer.writerows(数据)
注意编码用 utf-8-sig。用 utf-8 的话,Excel 打开中文会乱码。utf-8-sig 会在文件头写 BOM,Excel 才能正确识别。
三、Pandas 读写 CSV(推荐)
实际上我很少用原生 csv 库。Pandas 三行搞定的事,csv 库要写十几行。

import pandas as pd
# 读取
df = pd.read_csv(r"D:\\数据\\商品清单.csv", encoding="utf-8")
# 筛选
热销商品 = df[df["销量"] > 1000]
# 排序
热销商品 = 热销商品.sort_values("销量", ascending=False)
# 写回
热销商品.to_csv(r"D:\\数据\\热销商品.csv", encoding="utf-8-sig", index=False)
Pandas 的优势:筛选/排序/分组/合并都在 DataFrame 里操作,不需要自己写循环。
四、批量合并多个 CSV
采集流程分多次跑,每次生成一个 CSV。需要把多个 CSV 合并成一个。

import pandas as pd
import os
文件夹 = r"D:\\数据\\每日采集"
所有文件 = [f for f in os.listdir(文件夹) if f.endswith(".csv")]
数据框列表 = []
for 文件名 in 所有文件:
路径 = os.path.join(文件夹, 文件名)
df = pd.read_csv(路径, encoding="utf-8")
# 添加来源标记
df["数据来源"] = 文件名
数据框列表.append(df)
# 合并所有
合并结果 = pd.concat(数据框列表, ignore_index=True)
# 去重(按商品ID去重,保留第一次出现)
合并结果 = 合并结果.drop_duplicates(subset=["商品ID"], keep="first")
# 按日期排序
合并结果 = 合并结果.sort_values("采集日期")
# 保存
合并结果.to_csv(r"D:\\数据\\汇总数据.csv", encoding="utf-8-sig", index=False)
print(f"合并完成:{len(所有文件)}个文件 → {len(合并结果)}行数据")
五、增量写入(追加而非覆盖)
采集流程频繁运行,每次追加到同一个 CSV 末尾。
import pandas as pd
import os
目标文件 = r"D:\\数据\\历史数据.csv"
新数据 = df # 本次采集的数据
if os.path.exists(目标文件):
# 文件存在:追加模式(不写标题行)

新数据.to_csv(目标文件, mode="a", header=False,
encoding="utf-8-sig", index=False)
else:
# 文件不存在:创建并写入标题行
新数据.to_csv(目标文件, mode="w", header=True,
encoding="utf-8-sig", index=False)
这里的关键是 mode="a"(append 模式)配合 header=False(避免每次都写标题行)。
六、超大CSV分块读取
TEMU店群如何管理运营?
如果 CSV 有几十万行,一次性读取会爆内存。
import pandas as pd
# 分块读取,每次读10000行
chunk_size = 10000
计数器 = 0
for chunk in pd.read_csv(r"D:\\数据\\大数据.csv",
chunksize=chunk_size,
encoding="utf-8"):
# chunk 是每个批次的数据
计数器 += len(chunk)

# 对每个批次做处理
处理后 = chunk[chunk["价格"] > 50] # 只保留价格>50的
# 追加写入(第一个批次写标题,后续不写)
if 计数器 == chunk_size:
处理后.to_csv(r"D:\\数据\\筛选结果.csv", mode="w", index=False)
else:
处理后.to_csv(r"D:\\数据\\筛选结果.csv", mode="a", header=False, index=False)
print(f"处理完成,共 {计数器} 行")
七、CSV 编码问题速查
编码问题是 CSV 最常见的坑。
| Excel打开中文乱码 | 缺少BOM标识 | 用 utf-8-sig 编码写入 |
| Python读取报编码错 | 文件是GBK编码 | 用 encoding="gbk" 读取 |
| 某列数据有换行符 | 用户输入了回车 | 读取后 apply(lambda x: str(x).replace('\\n', ' ')) |
| 读取时空格被trim | CSV格式问题 | 读时指定 skipinitialspace=True |
八、影刀变量 → CSV 的完整实战

从采集到存储的完整链路:
# Step 1: 采集(影刀画布指令)
打开网页(...)
获取相似元素列表("商品卡片") → cards
# Step 2: 转为列表[字典]
数据列表 = []
for card in cards:
数据列表.append({
"商品ID": 获取卡片ID(card),
"名称": 获取卡片名称(card),
"价格": 获取卡片价格(card)
})
# Step 3: 写入CSV(Python代码指令)
import pandas as pd
# 数据列表 是影刀变量,在Python里直接引用
df = pd.DataFrame(数据列表)
df.to_csv(r"D:\\采集结果.csv", encoding="utf-8-sig", index=False)
这个链路比"先写Excel再导出"直接得多。CSV 不需要考虑 Excel 文件被占用、多 Sheet 等问题。
内容标签:#影刀RPA #CSV处理 #Pandas #数据存储 #文件合并
作者:林焱 
本文为《影刀RPA学习手册》系列文章之一,内容源于实操经验的整理与分享。 







