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

如何使用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()

代码说明

  1. 导入模块:先导入os模块,它提供了所有文件系统操作的工具
  2. 获取父文件夹名:用os.path.basename(root)从当前目录路径中提取最后一级的文件夹名称,这正是你需要的前缀
  3. 过滤文件格式:用endswith('.jpg')结合lower()确保不管是.JPG还是.jpg都能被处理
  4. 安全重命名:始终用os.path.join拼接路径,避免不同操作系统下的路径分隔符问题(比如Windows的\和Linux的/)

注意事项

  • 运行前建议先备份文件,避免意外情况
  • 如果需要处理.jpeg格式,把判断条件改成if file_name.lower().endswith(('.jpg', '.jpeg'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:37:04