执行os.rename重命名文件时报WinError 32文件占用错误怎么解决?
问题复现代码
os.rename("Rough.txt", "CodewithGanesh.txt")
报错信息
PermissionError: [WinError 32] 进程无法访问文件,因为另一个程序正在使用此文件: 'Rough.txt' -> 'CodewithGanesh.txt'
解决方案
- 检查代码内文件句柄是否释放
绝大多数该报错的常见诱因是执行重命名前,代码中打开了Rough.txt但未调用close()方法释放句柄,建议所有文件操作都使用with上下文管理器实现自动资源管理,会在操作结束后自动关闭文件句柄,示例如下:
# 推荐写法,操作结束后自动释放句柄 with open("Rough.txt", "r", encoding="utf-8") as f: # 执行文件读写操作 content = f.read() # 后续再执行重命名操作 os.rename("Rough.txt", "CodewithGanesh.txt")
排查系统层面的文件占用进程
按下Win + R输入resmon打开资源监视器,切换到「CPU」标签,在「关联的句柄」搜索框输入Rough.txt,即可看到所有占用该文件的进程,右键结束对应进程即可。解决PyCharm临时占用问题
PyCharm后台扫描项目文件生成索引时会临时占用文件,可右键项目根目录选择「Reload from Disk」,或直接重启PyCharm后再运行脚本。以管理员权限运行
右键PyCharm快捷方式,选择「以管理员身份运行」后再执行脚本,避免权限不足触发的误报。增加重试逻辑
如果是短暂的文件占用场景,可以增加重试逻辑规避临时占用问题:
import os import time max_retries = 5 retry_interval = 1 for _ in range(max_retries): try: os.rename("Rough.txt", "CodewithGanesh.txt") break except PermissionError: time.sleep(retry_interval) else: # 重试全部失败后抛出异常 raise
内容的提问来源于stack exchange,提问作者ganesh jadhav
相关产品推荐
相关产品推荐

