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

Python批量重命名子文件夹遇NameError报错,求解决方案

问题解决:批量重命名子文件夹的代码错误修复

错误原因

你代码里的循环变量拼写出错了——定义的是folderame(少了一个字母l),但后续调用的是foldername,Python找不到这个正确命名的变量,所以抛出了NameError。

修正后的完整代码

首先确保安装了natsort模块(用来实现文件夹的自然排序),如果没装,先在命令行执行:

pip install natsort

然后使用下面的代码:

import os
from natsort import natsorted

def rename_folders(path, new_name):
    # 遍历按自然排序后的文件夹列表,序号直接从1开始
    for i, foldername in enumerate(natsorted(os.listdir(path)), start=1):
        old_full_path = os.path.join(path, foldername)
        # 只处理文件夹,避免误操作路径里的文件
        if os.path.isdir(old_full_path):
            new_full_path = os.path.join(path, f"{new_name}{i}")
            os.rename(old_full_path, new_full_path)

# 替换成你的实际路径后调用
rename_folders('C:/Users/me/Dropbox/TASK/', 'file1')

优化说明

  • 去掉了os.chdir,直接用os.path.join拼接绝对路径,避免切换目录后出现的路径混乱问题
  • 增加了os.path.isdir判断,确保只重命名文件夹,不会误改路径里的文件
  • 用enumerate(..., start=1)让序号直接从1开始,不用额外写i+1
  • 用f-string格式化字符串,比format写法更简洁易读

后续提取PDF的小方案

重命名完文件夹后,要批量提取里面的PDF,可以用这段代码:

import os
import shutil
from glob import glob

def extract_pdfs(source_dir, target_dir):
    # 自动创建目标文件夹(如果不存在)
    os.makedirs(target_dir, exist_ok=True)
    # 遍历所有子文件夹
    for folder in os.listdir(source_dir):
        folder_path = os.path.join(source_dir, folder)
        if os.path.isdir(folder_path):
            # 查找当前文件夹里的所有PDF
            pdf_list = glob(os.path.join(folder_path, "*.pdf"))
            for pdf in pdf_list:
                # 提取PDF文件名,复制到目标目录
                pdf_filename = os.path.basename(pdf)
                shutil.copy(pdf, os.path.join(target_dir, pdf_filename))

# 调用示例:第一个参数是子文件夹所在路径,第二个是PDF存放的目标路径
extract_pdfs('C:/Users/me/Dropbox/TASK/', 'C:/Users/me/Dropbox/Extracted_PDFs/')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:10:23