Rohith の答えを詳しく説明するには、ファイルを開く方法が重要です。
内部でセレラルwith関数を呼び出すことで動作するので、ステップバイステップで試してみました:
>>> 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__()本質的な呼び出しはf.close()、このf.flush()出力バッファーをディスクにフラッシュするか、少なくともそうしようとします。
しかし、ファイルが書き込み可能でないため、失敗します。ということ[Errno 9] Bad file descriptorが起こります。