求助:使用open()和write()时出现OSError: [Errno 9]错误且文件未创建
解决OSError: [Errno 9] Bad file descriptor及文件未创建问题
可能的原因与修复方案
1. 缩进错误导致文件句柄提前关闭
你提供的代码中f.write("Test")的缩进层级与with语句不匹配。with语句会在其缩进块结束时自动关闭文件句柄,若写入操作不在with的代码块内,执行到f.write时文件已被关闭,就会触发Bad file descriptor错误,同时因写入操作未在文件打开状态下执行,目标文件也不会被创建(或创建后为空)。
修复后的正确代码:
with open('info2.txt', 'w+') as f: f.write("Test")
确保f.write与with语句保持一致的缩进(通常为4个空格),保证写入操作在文件打开期间执行。
2. 权限或路径问题
- 若当前工作目录无写入权限,即使代码正确也无法创建文件。可先打印当前目录确认权限:
确认目录有写入权限,或直接指定有权限的绝对路径创建文件:import os print(os.getcwd())# 替换为你拥有写入权限的绝对路径 with open('/Users/yourname/documents/info2.txt', 'w+') as f: f.write("Test") - 检查文件名是否包含系统不允许的特殊字符,避免命名规则导致的文件创建失败。
3. 环境或解释器异常
若上述方案无效,尝试重启Python解释器或更换运行环境(比如从IDE切换到命令行执行),排查是否是环境层面的资源占用或异常导致文件句柄异常。
内容的提问来源于stack exchange,提问作者Paaax
相关产品推荐
相关产品推荐

