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

