Python 2.7批量重命名目录文件失败,如何修复?
解决Python重命名文件时的WindowsError问题
问题根源
- 路径转义错误:Windows路径里的
\在Python字符串中是转义符,直接写"C:\Users\..."会导致\U、\u等被解析为转义序列,实际指向的路径不正确。 - 文件路径不完整:
os.listdir(path)返回的只是目标目录下的文件名(不含完整路径),直接用os.rename(i, ...)会在当前工作目录查找文件,而非指定的path目录,自然找不到目标文件。
修正后的代码
import os count = 0 # 用原始字符串避免转义问题,也可以写成双反斜杠形式"C:\\Users\\user\\Downloads\\imageye\\data" path = r"C:\Users\user\Downloads\imageye\data" for filename in os.listdir(path): # 拼接文件的完整绝对路径 old_full_path = os.path.join(path, filename) # 跳过目录(如果目标目录下存在子目录,避免误操作) if os.path.isdir(old_full_path): continue # 获取文件扩展名 file_ext = filename.split('.')[-1] # 生成新文件名和完整路径 new_filename = f"{count}.{file_ext}" new_full_path = os.path.join(path, new_filename) # 执行重命名 os.rename(old_full_path, new_full_path) print(f"完成重命名:{filename} → {new_filename}") count += 1
关键修改说明
- 路径定义优化:使用原始字符串
r""包裹路径,彻底避免转义字符干扰;也可将单个反斜杠替换为双反斜杠\\。 - 完整路径拼接:通过
os.path.join()生成文件的完整绝对路径,确保os.rename能精准定位到目标文件。 - 目录过滤:增加
os.path.isdir()判断,跳过目录类条目,防止对非文件对象执行重命名操作。 - 简洁的字符串格式化:用f-string生成新文件名,代码可读性更强(Python 3.6及以上版本支持)。
内容的提问来源于stack exchange,提问作者Issa Nasralli
相关产品推荐
相关产品推荐

