Python创建文件后删除报PermissionError: WinError 32错误如何解决?
报错原因
该错误是因为你打开文件写入内容后,没有主动释放文件句柄,文件仍然被当前Python进程占用,Windows系统不允许删除正在被进程占用的文件,所以触发了权限报错。你的代码中调用open()打开File.txt后,没有执行f.close()关闭文件,就直接调用os.remove()删除文件,自然会触发该错误。
解决方案
有两种常用的修复方式:
- 手动关闭文件后再删除
写完内容后先调用close()方法释放文件资源,再执行删除操作,修改后代码如下:
import os t = 'Testfile input...' f = open('File.txt', 'w') f.write('{}'.format(t)) # 关闭文件释放占用 f.close() os.remove('File.txt') print('File has been removed')
- 用
with上下文管理器自动管理文件(更推荐)with语句会在缩进代码块执行结束后自动关闭文件,不需要手动写close(),也不会出现忘记释放资源的问题,代码更安全简洁:
import os t = 'Testfile input...' with open('File.txt', 'w') as f: f.write('{}'.format(t)) # 离开with代码块后文件已经自动关闭,可直接删除 os.remove('File.txt') print('File has been removed')
关于程序执行顺序的问题
Python脚本默认就是从上到下顺序执行的,只要前一段代码的逻辑执行完毕、占用的资源全部正确释放,就会自动执行后续代码,不需要做特殊拆分。只要你确保前面操作的资源(比如文件、网络连接等)都正确关闭,后续操作就不会被前面的残留占用影响。
内容的提问来源于stack exchange,提问作者MM-13
相关产品推荐
相关产品推荐

