使用os.write时出现[Errno 9] Bad file descriptor错误的原因是什么?
问题原因与解决办法
报错根源分析
你碰到的OSError: [Errno 9] Bad file descriptor,核心是文件描述符无效,问题出在两个关键点:
- 路径转义错误:Windows路径里的
\在Python字符串中属于转义字符,直接写"d:\Coding\Python\OS module practise.txt"会让路径解析出错,系统找不到正确的文件位置。 - 打开模式不全:仅用
os.O_WRONLY打开文件时,如果目标文件不存在,os.open会直接失败,返回无效的文件描述符;就算文件存在,也可能因权限或模式不匹配导致写入失败。
修正后的代码
import os # 用原始字符串避免路径转义,同时补充必要的打开标志 file_path = r"d:\Coding\Python\OS module practise.txt" # O_WRONLY: 只写模式; O_CREAT: 文件不存在则创建; O_TRUNC: 文件存在则清空原有内容 g = os.open(file_path, os.O_WRONLY | os.O_CREAT | os.O_TRUNC) os.write(g, b"Hi") os.close(g) # 写完必须关闭文件描述符,释放系统资源
关键细节说明
- 路径可以用原始字符串(加前缀
r),或者把\替换成\\,确保系统能正确识别路径。 os.O_CREAT是必须的,否则文件不存在时打开操作直接失败;如果想追加内容而非清空,可以把os.O_TRUNC换成os.O_APPEND。- 务必调用
os.close(g),否则会造成系统资源泄漏。
内容的提问来源于stack exchange,提问作者Yuvraj Singh
相关产品推荐
相关产品推荐

