为何简单Python代码执行时出现Bad file descriptor错误?
OSError: [Errno 9] Bad file descriptor 调用file.close()时出错的排查(Python 3.11.4)
问题代码
# Python 3.11.4 file = open('pe.txt','w') file.write("que") file.close()
执行这段代码时,file.close()抛出错误:OSError: [Errno 9] Bad file descriptor,已知pe.txt具备读写权限且未被其他程序占用。
可能的原因
- 重复调用close():如果这段代码被循环执行、函数重复调用,或者在其他未展示的逻辑里又调用了一次
file.close(),第一次close后文件描述符已经被释放,第二次调用就会触发这个错误。哪怕你贴的代码只有一次close,也要检查是否有隐式的重复close操作。 - 文件对象被意外覆盖:在
write和close之间,可能有未展示的代码修改了file变量(比如file = None、重新赋值成其他对象),导致原来的文件对象引用丢失,调用close时操作的已经不是有效的文件描述符。 - 系统文件描述符耗尽:当系统打开的文件描述符总数达到上限时,哪怕
open看起来成功了,后续操作也可能触发描述符失效的错误。可以用ulimit -n(Linux系统)查看当前系统的文件描述符上限,确认是否达到阈值。 - 磁盘异常:虽然文件有读写权限,但如果磁盘已满、出现IO故障,可能导致
write操作后文件描述符被系统强制回收,后续close时就会报错。可以检查磁盘剩余空间和系统日志确认。
内容的提问来源于stack exchange,提问作者rVan
相关产品推荐
相关产品推荐

