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

如何批量移除子文件夹名称末尾的[Extra]后缀

如何批量移除子文件夹名称末尾的[Extra]后缀

嘿,这个批量重命名的需求我太熟了!看了你写的代码,问题出在几个关键细节上——比如你用了os.remove(suffix),这是用来删除文件的,完全不是重命名文件夹的操作,而且切换目录的步骤也多此一举,反而容易出问题。

给你两个靠谱的实现方案,都是直接批量处理文件夹重命名的,你挑顺手的用就行:

方案一:用Pathlib(现代、简洁,推荐)

Pathlib是Python 3.4+自带的路径处理模块,语法更直观,不用手动拼字符串路径:

from pathlib import Path

# 替换成你的目标文件夹路径
target_path = Path(r"C:\Test")
# 要移除的后缀
suffix = "[Extra]"

# 递归遍历所有子文件夹(包括嵌套的)
for dir_path in target_path.rglob("*"):
    # 只处理文件夹,且名称以[Extra]结尾
    if dir_path.is_dir() and dir_path.name.endswith(suffix):
        # 计算新的文件夹名称:去掉末尾的[Extra]
        new_dir_name = dir_path.name[:-len(suffix)]
        # 拼接新的文件夹路径
        new_dir_path = dir_path.parent / new_dir_name
        # 执行重命名
        dir_path.rename(new_dir_path)

方案二:用os模块(兼容老版本Python)

如果你习惯用传统的os模块,也可以这么写,逻辑和上面完全一致:

import os

path = r"C:\Test"
suffix = "[Extra]"

# topdown=False表示从最深层的子文件夹开始处理,避免重命名父文件夹影响后续遍历
for root, dirs, files in os.walk(path, topdown=False):
    for dir_name in dirs:
        if dir_name.endswith(suffix):
            # 拼接原来的文件夹完整路径
            old_dir_full = os.path.join(root, dir_name)
            # 生成新的文件夹名称
            new_dir_name = dir_name[:-len(suffix)]
            # 拼接新的文件夹完整路径
            new_dir_full = os.path.join(root, new_dir_name)
            # 执行重命名
            os.rename(old_dir_full, new_dir_full)

顺便提下你原来代码的问题:

  • os.remove(suffix):这个函数是用来删除文件的,参数需要传文件路径,你直接传个字符串[Extra],它会尝试删除当前目录下叫[Extra]的文件,完全不是你要的重命名操作。
  • os.chdir(parentDirectory):完全没必要切换工作目录,直接通过路径拼接就能处理重命名,切换目录反而可能因为权限或者路径层级问题出错。

备注:内容来源于stack exchange,提问作者Brunooo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 16:13:08