用 Python 按款号自动归档商品图片:os 与 shutil 实战

举报
yd_295675147 发表于 2026/11/10 00:23:10 2026/11/10
【摘要】 做跨境电商运营,商品图片一多就容易乱:供应商发来的原图、拍摄的成片、平台下载的主图常常混在一个文件夹里,文件名又是 IMG_20261110_0931.jpg 这种毫无业务含义的格式。找一张图要翻半天,上架时还容易把 A 款的图挂到 B 款下面,白白浪费时间还可能出错。本文分享一个实用的小脚本:按款号自动归档商品图片,核心只用 Python 标准库的 os、shutil 和 pathlib,...

做跨境电商运营,商品图片一多就容易乱:供应商发来的原图、拍摄的成片、平台下载的主图常常混在一个文件夹里,文件名又是 IMG_20261110_0931.jpg 这种毫无业务含义的格式。找一张图要翻半天,上架时还容易把 A 款的图挂到 B 款下面,白白浪费时间还可能出错。本文分享一个实用的小脚本:按款号自动归档商品图片,核心只用 Python 标准库的 os、shutil 和 pathlib,不用装任何第三方包,十几行代码就能跑起来。

一、先定规则:款号就是文件夹名

自动化之前,先把命名规则定下来,否则脚本无从下手。我们团队的约定很简单:每个款号对应一个文件夹,文件夹名就是款号,例如 SKU12345;文件夹里面再按用途分主图、细节图、白底图。文件名统一写成“款号_用途_序号.扩展名”,例如 SKU12345_主图_01.jpg。供应商发来的原始文件名五花八门,但只要文件名里包含款号,脚本就能认出来。规则定死之后,人工只需要做一件事:把待归档的图片丢进一个“待归档”文件夹,剩下的交给脚本。

二、核心思路:遍历、识别、移动

整个流程只有三步。第一步,用 pathlib 遍历“待归档”文件夹,筛出 jpg、png、webp 等图片文件,跳过表格和压缩包。第二步,从文件名里提取款号:很多供应商的文件名是“款号_描述_序号”的形式,用下划线切分,取第一段并转大写,就是款号;如果文件名里没有款号,就放进“待人工确认”文件夹,绝不乱猜。第三步,用 shutil.move 把文件移到“商品图库/款号/”下面,目标文件夹不存在就用 mkdir 自动创建。

三、可运行的完整脚本

import os, shutil
from pathlib import Path

SRC = Path("待归档")
DST = Path("商品图库")

def style_no(name: str) -> str:
    # 文件名形如 "SKU12345_主图_01.jpg",取下划线前的款号
    return name.split("_", 1)[0].upper()

for file in SRC.iterdir():
    if not file.is_file() or file.suffix.lower() not in {".jpg", ".jpeg", ".png", ".webp"}:
        continue
    target_dir = DST / style_no(file.stem)
    target_dir.mkdir(parents=True, exist_ok=True)
    target = target_dir / file.name
    if target.exists():  # 同名文件:加后缀,避免覆盖
        target = target_dir / f"{file.stem}_dup{file.suffix}"
    shutil.move(str(file), str(target))
    print(f"已归档:{file.name} -> {target}")
print("归档完成")

运行前先在小批量图片上试一次,确认归档结果无误再全量跑。脚本只做移动,不做删除,万一规则写错,文件还在目标文件夹里,手动移回来就行。

四、两个容易踩的坑:重名与重复

第一个坑是重名。不同批次的同款主图可能都叫“SKU12345_主图_01.jpg”,直接移动会覆盖。我的做法是:目标位置已有同名文件时,在文件名后加 _dup 再移动,并打印出来,事后人工确认一次。第二个坑是内容重复:同一张图被改了个名字发了两遍,占空间还容易混淆。可以在移动前算一下文件的 MD5,把哈希值记到一个简单的文本清单里,哈希已存在就说明是重复图,跳过并记录。os 与 hashlib 都是标准库,不用额外安装。

五、再往前一步:顺手规范命名

归档的同时,还可以顺手把文件名统一改成“款号_用途_序号”的格式。做法是先按款号分好组,再按修改时间排序,依次编号。改名前先打印一份“原名 -> 新名”的对照表,确认无误再执行;也可以先用 shutil.copy 复制到新位置,确认无误后再删旧文件。等这套流程跑顺了,商品图片就从“堆在一个文件夹里”变成了“按款号随时能找到”,上架、做图、盘点都快得多。

小结:工具不需要多高级,规则清晰、流程可逆,比功能花哨更重要。os 负责遍历与判断,shutil 负责移动与复制,pathlib 让路径拼接不再出错,三个标准库组合起来,就能解决跨境电商日常运营里最磨人的图片整理问题。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。