You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于CSV中的字符串值实现分类递增文件重命名?

按分类递增计数重命名文件的解决方案

这问题很典型——你需要给每个动物类别单独维护计数器,而不是用一个全局的计数变量。咱们直接改代码来实现需求:

修改后的完整代码

import os
import csv

# 用字典存储每个类别的当前计数,自动适配新类别
category_counts = {}

with open('rename.csv') as f:
    lines = csv.reader(f)
    for line in lines:
        original_path = line[0]
        category = line[1]
        
        # 首次遇到该类别时,初始化计数为0
        if category not in category_counts:
            category_counts[category] = 0
        
        # 对应类别计数+1
        category_counts[category] += 1
        # 生成带分类序号的新文件名
        new_filename = f"{category}{category_counts[category]}.jpg"
        
        # 执行重命名操作
        os.rename(original_path, new_filename)

关键改动说明

  • 替换全局计数为分类字典:用category_counts字典替代原来的count变量,每个动物类别对应一个独立的计数器,比如category_counts['cat']专门记录cat类的序号。
  • 动态初始化类别:如果CSV里新增了其他类别(比如rabbit),代码会自动为它创建计数器,不用手动修改代码。
  • 字符串格式化生成新名:用f-string拼接类别名和当前计数,简洁直接生成cat1、dog2这类格式的文件名。

可选优化(如果确定只有指定类别)

如果你确认CSV里只会有cat、dog、mouse、hamster这四个类别,可以提前初始化字典,省掉判断步骤:

category_counts = {'cat': 0, 'dog': 0, 'mouse': 0, 'hamster': 0}

注意事项

  • 确保line[0]是正确的文件路径(相对路径或绝对路径),否则os.rename会找不到文件报错。
  • 如果目标目录里已经存在重名文件(比如之前手动创建过cat1.jpg),重命名会失败,建议先清理目标目录或添加重名判断逻辑。

内容的提问来源于stack exchange,提问作者Quadracola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 17:33:11