开发
成果示例
把 9 家门店的月度销售文件合并成一份 Excel 报表
如何运行
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO 文件夹:sales/2026-10,找到 9 个文件
2026-11-02 09:14:03 INFO shop-01.csv:1,284 行
2026-11-02 09:14:04 INFO shop-02.xlsx:967 行
2026-11-02 09:14:04 WARN shop-07.csv:跳过 3 行缺少价格的记录(第 88、412、913 行)
2026-11-02 09:14:05 INFO 完成:10,412 行 -> report-2026-10.xlsx(工作表“销售”和“汇总”)
改设置,不改代码
每家门店的列名都写在 settings.ini 中,所以新增一家门店或某列改了名,只需在那里改一行:
[columns]
date = 日期, 销售日期, 日
product = 商品, 品名, 名称
quantity = 数量, 件数, 个数
price = 价格, 单价
部分代码
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""读取一家门店的文件,并把列名改为报表使用的列名。"""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}:找不到“{name}”对应的列(已查找 {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
**文件:**一个 ZIP 压缩包,内含 merge_sales.py(310 行)、settings.ini、requirements.txt 和 README,说明如何安装 Python、运行脚本以及日志中每条消息的含义。客户在自己的电脑上运行。
**客户:**一家拥有 9 家门店的小型文具连锁店;每家门店每月以 CSV 或 Excel 文件发送当月销售数据,各自的列名略有不同。 **任务:**一个脚本,读取文件夹中的所有文件,把各列统一成同一格式,并生成一份 Excel 报表,包含全部销售记录和一张按门店汇总的工作表。
客户及所有信息均为虚构。
服务介绍
从网店、CRM 或活动报名中导出的联系人,很少能符合邮件营销服务的导入要求:列名不同,姓和名挤在一个单元格里,标签放得乱七八糟,已经退订的人还在名单上。这个 Python 脚本读取您的导出文件,按您所用服务的导入格式写出一份干净的 CSV:按需拆分姓名,映射字段和标签,剔除格式有误的邮箱和重复项;从标准版起,只保留有同意标记的人,删除已退订的人,并另附一份被剔除行的文件供您核对。它只适用于同意接收您信息的自有联系人,绝不用于购买或抓取来的名单。它在您的电脑上运行,不连接该服务;文件由您自己导入。
服务内容
- 您将获得一个 ZIP 压缩包,内含 Python 脚本、附分步说明的 README,从标准版起还包含写有字段和标签映射关系的设置文件;订单页面上也能查看代码。
- 您所用服务的格式按其导入模板或示例文件
- 尊重用户同意从标准版起,只保留已同意的人,剔除已退订的人
- 剔除重复和拼写错误剔除格式有误的地址和重复项
- 保留被剔除的行单独一个文件,说明剔除了什么、为什么剔除
- 代码易读附有注释,以后添加字段很方便
服务流程
- 1示例您发来每份导出文件的虚构数据行和您所用服务的导入格式
- 2代码我们编写脚本和运行说明
- 3试用您运行脚本,查看被剔除的行,并导入一份小规模测试名单
- 4修改您在套餐范围内提出修改,如有报错信息请一并发来
需要您提供的信息
每份导出文件的表头和 10 到 20 行数据,姓名和邮箱用虚构的,但格式保持一致;哪一列表示同意、哪一列表示退订;您使用的邮件营销服务及其导入模板或导入帮助页面链接;以及标签或分组如何设置。这些联系人是怎么收集的(您的网店、订阅表单、活动)。切勿发送真实名单。
我们会询问您:
- 联系人来自哪里?
- 要导入哪个邮件营销服务?
- 同意情况是怎么记录的?
- 需要标签或分组吗?
套餐对比
付款保障
您在下单时付款,但款项仅在您验收后才会结算。
- 固定价格付款后套餐价格不会变动。
- 款项先冻结付款时,这笔金额只是被冻结。您验收后,款项才会结算给平台。
- 交付前检查每份成果在送达您之前都会经过质量检查,验收前您可以在订单页面查看。
- 免费修改在需求说明范围内,您可以在套餐允许的次数内提出修改。
- 3 天后自动验收如果交付后 3 天内您既未验收也未提出修改,工作将自动验收。如果您在交付后于订单聊天中留言,订单将暂停自动验收;我们回复后,可能会重新开始计算 3 天,并会在聊天中告知您。
- 返工或全额退款如果成果与您的需求说明不符且修改后仍未解决,或工作耗时超过交付期限的两倍,请在订单聊天中留言:我们将为您返工或全额退款。
问题与解答
我能把它用在购买的名单上吗?
不能。它只适用于同意接收您邮件的自有联系人。购买或抓取来的名单违反邮件营销服务的规定,在许多国家也违反法律。
它会把联系人上传到该服务吗?
不会。它只负责生成文件;文件由您在邮件营销服务的账户中导入,服务方也会请您确认这些联系人已同意接收邮件。
会检查邮箱是否存在吗?
它会检查每个地址写法是否正确,并标出常见的域名拼写错误。邮箱是否存在只有邮件服务商知道,您的邮件营销服务会在发送后报告退信情况。
我的联系人名单安全吗?
它一直在您的电脑上:脚本由您自己运行,我们只能看到您发来的虚构数据行。
没有找到答案?


