9
我正在製作一個臨時文件tempfile.mkstemp()
。它返回一個os級別的fd以及文件的路徑。我想要os.fdopen()
的os級文件描述符寫入它。如果我然後關閉os.fdopen()
返回的文件,OS級文件描述符是否會關閉,還是我必須明確地指定os.close()
?文檔似乎沒有說明明確發生了什麼。是否關閉用os.fdopen打開的文件關閉os級別的fd?
我正在製作一個臨時文件tempfile.mkstemp()
。它返回一個os級別的fd以及文件的路徑。我想要os.fdopen()
的os級文件描述符寫入它。如果我然後關閉os.fdopen()
返回的文件,OS級文件描述符是否會關閉,還是我必須明確地指定os.close()
?文檔似乎沒有說明明確發生了什麼。是否關閉用os.fdopen打開的文件關閉os級別的fd?
我很確定fd會被關閉。如果你不想要,你可以先複製它。當然,你可以隨時輕鬆地測試它。
測試是這樣的:
from __future__ import print_function
import os
import tempfile
import errno
fd, tmpname = tempfile.mkstemp()
fo = os.fdopen(fd, "w")
fo.write("something\n")
fo.close()
try:
os.close(fd)
except OSError as oserr:
if oserr.args[0] == errno.EBADF:
print ("Closing file has closed file descriptor.")
else:
print ("Some other error:", oserr)
else:
print ("File descriptor not closed.")
這表明,當文件對象關閉了底層的文件描述符被關閉。
感謝您的支持! – dimo414