python:如果我使用fdopen需要从mkstemp关闭文件?

Cla*_*diu 11 python file-io operating-system file

以下哪项更正确?

fi, path = tempfile.mkstemp()
f = os.fdopen(fi, "w")
f.write(res)
f.close()
os.close(fi)
Run Code Online (Sandbox Code Playgroud)

要么:

fi, path = tempfile.mkstemp()
f = os.fdopen(fi, "w")
f.write(res)
f.close()
Run Code Online (Sandbox Code Playgroud)

And*_*ark 6

检查f.fileno(),它应该是一样的fi.您应该只关闭该文件描述符一次,所以第二个是正确的.

在Unix上,第一个导致错误:

>>> f.close()
>>> os.close(fi)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)