关闭用打开的文件吗os.fdopen操作系统关闭oslevel fd?

2024-10-01 09:25:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用tempfile.mkstemp()生成一个临时文件。它返回一个操作系统级的fd以及文件的路径。我想os.fdopen()操作系统级文件描述符来写入它。如果我随后关闭os.fdopen()返回的文件,操作系统级文件描述符将关闭,还是必须显式地os.close()它?文件似乎没有明确说明发生了什么。在


Tags: 文件路径closeostempfile描述符fdfdopen
1条回答
网友
1楼 · 发布于 2024-10-01 09:25:47

我很肯定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.")

这表明当文件对象关闭时,底层文件描述符被关闭。在

相关问题 更多 >