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

如何使用glob函数遍历子文件夹实现批量文件重命名

批量遍历子文件夹并重命名JSON文件

修改思路

把单文件夹重命名逻辑封装为函数,然后遍历目标父目录下的所有子文件夹,逐个执行重命名操作。每个子文件夹的计数从零开始,保证命名独立性。

修改后的完整代码

from google.colab import drive
drive.mount('/content/drive')

import os
import glob
import re

def rename_json_files(folder_path):
    ext = '.json'
    i = 0
    # 遍历当前文件夹下的所有JSON文件
    for filename in glob.glob(os.path.join(folder_path, '*' + ext)):
        # 跳过已经符合命名规则的文件
        if not re.search(r'image_\d{3}' + re.escape(ext) + r'$', filename):
            # 找到未被占用的新文件名
            while True:
                newname = os.path.join(folder_path, f'image_{i:05d}_keypoints{ext}')
                if os.path.exists(newname):
                    i += 1
                else:
                    break
            print(f'重命名 "{filename}" 为 "{newname}"...')
            os.rename(filename, newname)

# 指定父目录(包含所有子文件夹的根目录)
parent_dir = r'/content/drive/MyDrive/Training/'

# 遍历父目录下的所有子文件夹
for entry in os.scandir(parent_dir):
    if entry.is_dir():
        print(f'开始处理文件夹: {entry.path}')
        rename_json_files(entry.path)
        print(f'完成文件夹: {entry.path}\n')

关键改动说明

  • 封装函数:将单文件夹的重命名逻辑打包成rename_json_files函数,参数为目标文件夹路径,方便重复调用。
  • 遍历子文件夹:使用os.scandir遍历父目录,只处理其中的文件夹(跳过文件),确保每个子文件夹都被处理。
  • 独立计数:每个子文件夹处理时,计数变量i重新初始化为0,避免不同文件夹间的计数干扰。
  • 语法优化:改用f-string格式化字符串,代码更简洁易读。

注意事项

  • 确保云端硬盘挂载成功,父目录路径正确。
  • 脚本会跳过已经符合image_xxx.json格式的文件,避免重复操作。
  • 执行前建议先在小批量子文件夹测试,确认命名规则符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:15:33