为了详细说明Rohith 的回答,他们打开文件的方式很重要。
通过with
内部调用 seleral 函数来工作,所以我一步一步地尝试了它:
>>> fd = os.open("c:\\temp\\xyxy", os.O_CREAT)
>>> f = os.fdopen(fd, 'w')
>>> myfile = f.__enter__()
>>> myfile.write("213")
>>> f.__exit__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 9] Bad file descriptor
什么?为什么?为什么是现在?
如果我也这样做
>>> fd = os.open(filepath, os.O_CREAT | os.O_RDWR)
一切正常。
您只需write()
写入文件对象的输出缓冲区,然后f.__exit__()
调用Essentiall f.close()
,后者又调用f.flush()
,将这个输出缓冲区刷新到磁盘 - 或者至少尝试这样做。
但它失败了,因为该文件不可写。所以[Errno 9] Bad file descriptor
出现了。