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

如何用Python给指定子文件夹内文件添加父文件夹名前缀

修正后的代码及解释

原代码的问题在于:

  • 取的是当前Output_folder的名称作为前缀,而你需要的是它上一级目录(GC0002567_20230501)的名称
  • 没有处理文件名中下划线替换为点的需求(比如file1_csv→file1.csv)

以下是修正后的代码:

import os

# 目标文件夹路径
target_dir = r"C:\Users\Priya\Documents\GC0002567_20230501\Output_folder"

# 获取需要添加的前缀:上级目录的名称
prefix = os.path.basename(os.path.dirname(target_dir))

# 遍历目标文件夹中的所有文件
for filename in os.listdir(target_dir):
    file_path = os.path.join(target_dir, filename)
    # 跳过子文件夹,只处理文件
    if not os.path.isfile(file_path):
        continue
    # 避免重复添加前缀(如果已经有前缀则跳过)
    if filename.startswith(f"{prefix}_"):
        continue
    # 处理文件名:把最后一个下划线替换为点(适配file1_csv这类命名)
    if "_" in filename:
        name_part, ext_part = filename.rsplit("_", 1)
        new_filename = f"{prefix}_{name_part}.{ext_part}"
    else:
        # 如果文件名没有下划线,直接加前缀
        new_filename = f"{prefix}_{filename}"
    # 重命名文件
    new_file_path = os.path.join(target_dir, new_filename)
    os.rename(file_path, new_file_path)

代码说明:

  • 用os.path.dirname(target_dir)获取Output_folder的上级目录路径,再用os.path.basename提取目录名称作为前缀
  • 使用os.listdir替代os.walk,因为你只需要处理单个文件夹的文件,不需要遍历子目录
  • 增加了重复前缀判断,避免多次运行脚本时重复添加前缀
  • 处理了文件名中下划线转后缀点的逻辑,适配你给出的file1_csv这类命名场景

运行后,文件会被重命名为你期望的格式:

  • GC0002567_20230501_file1.csv
  • GC0002567_20230501_file2.csv
  • GC0002567_20230501_file3.docx
  • GC0002567_20230501_file4.xlsx
  • GC0002567_20230501_file5.log

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 05:22:11