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

Python中print()语句为何会引发[Errno 9] Bad file descriptor错误?

当然有可能,这类随机错误的核心原因是标准输出(stdout)的文件描述符被意外关闭或失效,结合单元测试场景,常见触发点包括:

  • 代码或测试框架中存在sys.stdout.close()这类操作,关闭了stdout后,后续的print()仍试图向这个已失效的文件描述符写入。单元测试的执行顺序、并发(多线程/多进程测试)的随机性,导致错误时有时无。
  • 测试环境里stdout被重定向到临时文件、管道或其他资源,而这些资源在print()调用前就被提前关闭了,写入操作自然会触发文件描述符无效的错误。
  • 多线程/多进程测试场景下,某个线程/进程退出时误关闭了全局的stdout,其他线程的print()调用就会失败。

移除print()后,不再有写入无效文件描述符的操作,错误自然消失。

可以从这几个方向排查:

  • 检查代码中是否有直接操作sys.stdout的逻辑,比如关闭、替换后未正确恢复。
  • 如果用了多线程/多进程测试,确认是否有子线程/子进程在退出时误关了stdout。
  • 查看测试框架的配置,是否有捕获输出后未正确还原stdout的情况。

内容的提问来源于stack exchange,提问作者dataviews

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:54:27