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

如何在folder_X的子文件夹内批量执行代码且保留文件原位置?

遍历子文件夹处理文件并保留原路径的解决方案

下面是两种方法的正确实现方式,你可以对照检查自己的代码哪里出了问题:

方法一:使用os.walk

os.walk是遍历目录树的标准方法,核心是要拿到每个文件的完整路径,处理后直接在原路径覆盖或生成新文件(如果需要保留原文件就修改文件名)。

示例代码:

import os

root_folder = "folder_X"

# 遍历所有子文件夹和文件
for root, dirs, files in os.walk(root_folder):
    for file in files:
        # 拼接文件的完整路径
        file_path = os.path.join(root, file)
        
        # 这里写你的处理逻辑,比如读取文件
        with open(file_path, 'r', encoding='utf-8') as f:
            content = f.read()
        
        # 示例处理:给内容加个前缀(替换成你的实际操作)
        processed_content = f"[processed] {content}"
        
        # 将处理后的内容写回原文件(如果要保留原文件,就改文件名比如file_path + ".processed")
        with open(file_path, 'w', encoding='utf-8') as f:
            f.write(processed_content)
        
        print(f"已处理文件:{file_path}")

方法二:使用glob(Python 3.5+)

glob的递归模式需要开启recursive=True,并且用**匹配所有子目录,同时要注意判断目标是否为文件(避免把文件夹当成文件处理)。

示例代码:

import glob
import os

# 匹配folder_X下所有子文件夹里的文件,**表示递归所有层级
file_paths = glob.glob(os.path.join("folder_X", "**", "*"), recursive=True)

for path in file_paths:
    # 跳过文件夹,只处理文件
    if not os.path.isfile(path):
        continue
    
    # 同样写你的处理逻辑
    with open(path, 'r', encoding='utf-8') as f:
        content = f.read()
    
    processed_content = f"[processed] {content}"
    
    # 写回原路径
    with open(path, 'w', encoding='utf-8') as f:
        f.write(processed_content)
    
    print(f"已处理文件:{path}")

常见问题排查

  • 你之前的代码可能没正确拼接完整路径,导致处理时找不到文件或写到了错误的位置
  • 如果只需要处理特定后缀的文件(比如.txt),可以把匹配规则改成os.path.join("folder_X", "**", "*.txt"),避免处理无关文件
  • 注意文件权限问题,如果出现写入错误,检查是否有文件被占用或没有写入权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:12:39