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

使用os.rename重命名文件失败,报WindowsError[Error2]错误

解决Python批量重命名文件时的「找不到文件」错误

嘿,我来帮你搞定这个文件重命名的问题!你遇到的WindowsError: [Error 2]本质原因很简单:你用os.listdir()拿到的只是纯文件名,不是完整的文件路径。当你直接调用os.rename(x, ...)时,Python会在当前的工作目录(不是你指定的S:\Shared\Santa Rosa)里找这些文件,自然会找不到啦。

下面给你两种靠谱的解决方法,还附带了更安全的细节处理:

方法一:拼接完整文件路径(推荐)

这种方法不用切换工作目录,直接通过os.path.join把目标目录和文件名拼接成完整路径,最稳妥:

import os

# 定义目标目录
target_dir = r"S:\Shared\Santa Rosa"

# 遍历目录下的所有文件/文件夹
for filename in os.listdir(target_dir):
    # 只处理以__开头的文件(避免误改文件夹或不需要重命名的文件)
    if filename.startswith('__') and os.path.isfile(os.path.join(target_dir, filename)):
        # 拼接原文件和新文件的完整路径
        old_full_path = os.path.join(target_dir, filename)
        # 只替换开头的__(第三个参数1表示只替换一次,防止误改文件名中间的下划线)
        new_filename = filename.replace('__', '', 1)
        new_full_path = os.path.join(target_dir, new_filename)
        
        # 可以先打印预览,确认没问题再执行rename
        # print(f"重命名:{old_full_path} -> {new_full_path}")
        os.rename(old_full_path, new_full_path)

方法二:先切换到目标目录再操作

如果你觉得拼接路径麻烦,也可以先切换到目标目录,再直接用文件名操作:

import os
from contextlib import chdir

target_dir = r"S:\Shared\Santa Rosa"

# 使用上下文管理器切换目录,退出后自动回到原工作目录
with chdir(target_dir):
    for filename in os.listdir():
        if filename.startswith('__') and os.path.isfile(filename):
            new_filename = filename.replace('__', '', 1)
            # 预览用print,确认后换成os.rename
            # print(f"重命名:{filename} -> {new_filename}")
            os.rename(filename, new_filename)

额外的安全建议

  • 先备份文件:批量操作前最好先复制一份目标文件到其他目录,避免误操作导致文件丢失
  • 先预览再执行:把os.rename换成print语句,先确认所有重命名的路径和文件名都是正确的,再真正执行重命名
  • 过滤文件类型:如果只需要处理PDF文件,可以再加个判断if filename.endswith('.pdf'),进一步缩小操作范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:56:09