如何使用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
相关产品推荐
相关产品推荐

