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

执行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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:45:10