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

os.walk重命名文件时无法识别含点号文件夹的问题如何修复?

问题根因

现有代码仅处理了os.walk()返回的文件集合files,未对同步返回的子目录集合subdirs做任何重命名操作,和目录名称是否带点号无关——os.walk本身可以正常识别名称含点的目录。

代码修改方案

需要做两处核心调整:

  • 新增子目录名称匹配、重命名逻辑
  • 目录重命名后必须更新subdirs列表的对应元素:os.walk默认自上而下遍历,会依赖当前subdirs列表的名称进入子目录,不更新会导致后续子目录遍历失败

修改后的完整代码如下:

import os

folder_path = "替换为你的目标目录路径"
old = "abc"
new = "def"

for path, subdirs, files in os.walk(folder_path, topdown=True):
    # 处理当前目录下的文件
    for name in files:
        if old in name:
            old_file_path = os.path.join(path, name)
            new_file_path = os.path.join(path, name.replace(old, new))
            os.rename(old_file_path, new_file_path)
    
    # 处理当前目录下的子目录
    for idx, dir_name in enumerate(subdirs):
        if old in dir_name:
            old_dir_path = os.path.join(path, dir_name)
            new_dir_name = dir_name.replace(old, new)
            new_dir_path = os.path.join(path, new_dir_name)
            os.rename(old_dir_path, new_dir_path)
            # 更新subdirs列表,保证后续子目录遍历正常
            subdirs[idx] = new_dir_name

注意事项

  • 代码中的old和new必须定义为字符串类型,需要用引号包裹
  • 建议先在测试目录验证逻辑符合预期后,再对正式目录执行操作,避免误改文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:06:03