Python重命名test文件夹文件时遇WindowsError: [Error 2]文件未找到错误求助
解决批量重命名时出现的WindowsError: [Error 2] 问题
嘿,我来帮你搞定这个重命名时的「找不到文件」问题!这个错误我之前也踩过坑,大多是路径处理不当或者没考虑文件状态导致的,咱们一步步排查解决:
一定要用完整文件路径
很多新手容易犯的错:遍历test文件夹时只拿到了文件名,直接用os.rename(filename, ...),但系统会在当前运行代码的目录里找这个文件,而不是test文件夹里。正确的做法是拼接文件夹路径和文件名,生成完整的旧路径和新路径:import os folder_path = 'test' for idx, filename in enumerate(os.listdir(folder_path), start=1): # 拼接完整的旧文件路径 old_full_path = os.path.join(folder_path, filename) # 保留原文件后缀(如果不需要可以去掉这行) file_ext = os.path.splitext(filename)[1] # 拼接新的完整路径 new_full_path = os.path.join(folder_path, f"{idx}{file_ext}") os.rename(old_full_path, new_full_path)跳过子文件夹,只处理文件
如果test文件夹里还有子文件夹,os.listdir会把文件夹也列出来,尝试重命名文件夹可能触发错误,或者误把文件夹当成文件处理。加个判断只处理文件:import os folder_path = 'test' count = 1 for filename in os.listdir(folder_path): full_path = os.path.join(folder_path, filename) # 只对文件执行重命名操作 if os.path.isfile(full_path): file_ext = os.path.splitext(filename)[1] new_full_path = os.path.join(folder_path, f"{count}{file_ext}") os.rename(full_path, new_full_path) count += 1检查文件是否被占用
如果test里的某个文件正在被其他程序打开(比如图片查看器、Word),系统会锁定这个文件,导致重命名失败,也可能抛出「找不到文件」的错误。先把所有相关程序关掉,再运行代码试试。用绝对路径更稳妥
有时候相对路径会因为代码运行的当前目录不是你预期的而出错,换成绝对路径就不会有这个问题:import os # 获取test文件夹的绝对路径 folder_path = os.path.abspath('test') count = 1 for filename in os.listdir(folder_path): full_path = os.path.join(folder_path, filename) if os.path.isfile(full_path): file_ext = os.path.splitext(filename)[1] new_full_path = os.path.join(folder_path, f"{count}{file_ext}") os.rename(full_path, new_full_path) count += 1
另外提一句:在Python 3里,WindowsError已经合并到OSError里了,但错误码2的含义还是「找不到指定文件」,所以上面的方案都适用。
内容的提问来源于stack exchange,提问作者Amandeep singh
相关产品推荐
相关产品推荐

