如何使用Python将子文件夹内的JPG文件重命名为父文件夹名加原文件名?
解决图片批量重命名问题
我来帮你搞定这个批量重命名的需求!先看看你现有代码里的几个关键问题:
- 没导入必要的
os模块,程序根本没法调用文件操作的API newname = files + name完全搞错了:files是当前目录下的所有文件组成的列表,不是你需要的父文件夹名称- 没有过滤文件格式,会把当前目录下的所有文件都重命名,不符合你只改
.jpg的需求
修正后的完整代码
import os def rename_images(): # 目标根目录 root_path = 'D:/parent_folder' # 遍历目录树:root是当前目录路径,dirs是当前目录下的子文件夹,files是当前目录下的文件 for root, dirs, files in os.walk(root_path): # 获取当前文件所在的父文件夹名称(比如file1、file2) parent_folder_name = os.path.basename(root) for file_name in files: # 只处理.jpg格式的文件,也可以加上.jpeg,或者忽略大小写 if file_name.lower().endswith('.jpg'): # 构造新文件名:父文件夹名 + _ + 原文件名 new_file_name = f"{parent_folder_name}_{file_name}" # 拼接原文件和新文件的完整路径 old_full_path = os.path.join(root, file_name) new_full_path = os.path.join(root, new_file_name) # 执行重命名操作 os.rename(old_full_path, new_full_path) print(f"已重命名:{old_full_path} -> {new_full_path}") # 调用函数 rename_images()
代码说明
- 导入模块:先导入
os模块,它提供了所有文件系统操作的工具 - 获取父文件夹名:用
os.path.basename(root)从当前目录路径中提取最后一级的文件夹名称,这正是你需要的前缀 - 过滤文件格式:用
endswith('.jpg')结合lower()确保不管是.JPG还是.jpg都能被处理 - 安全重命名:始终用
os.path.join拼接路径,避免不同操作系统下的路径分隔符问题(比如Windows的\和Linux的/)
注意事项
- 运行前建议先备份文件,避免意外情况
- 如果需要处理
.jpeg格式,把判断条件改成if file_name.lower().endswith(('.jpg', '.jpeg'))
内容的提问来源于stack exchange,提问作者mumtaz
相关产品推荐
相关产品推荐

