Python从文件描述符int(从操作系统打开)

2024-09-20 04:10:59 发布

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

我正在使用fusepy,我需要将一个文件描述符转换回一个file对象,这样我就可以获得原始的文件路径

在fusepy示例中,创建文件时,将返回一个文件描述符,例如:

def open(self, path, flags):
    print("open:", path)
    return os.open(path, flags)

返回的结果是一个整数:<class 'int'>,值为4

在一个名为write的单独函数中,我需要将文件描述符反转回一个文件中,这样我就可以获得文件路径,所以我尝试了:

^{pr2}$

当我检查f的类型时,我得到如下f is type: <class '_io.TextIOWrapper'>

这不是我所期望的,但是一个快速的dir(f)显示它有一个name属性,我想这就是我要找的,除了name只是个数字4。。。

如何获取描述符指向的原始文件路径?


Tags: 文件path对象nameself路径示例def
1条回答
网友
1楼 · 发布于 2024-09-20 04:10:59

既然这似乎能满足需要,我暂时把它作为一个答案贴出来。人们可以通过f.bufferf.buffer.raw访问底层对象(这并不奇怪,这一点取决于使用的Python版本,在v2中这看起来不同),但这仍然无助于访问打开文件时使用的文件名。注意:这同样可以发生在调用进程中,描述符也可以由python进程继承。在

不确定是否有更好、更可移植的方法,但可以查询操作系统,在类似U*X的系统上,一种现成的方法是引用procfs结构,即上面的例子:

os.readlink(f"/proc/self/fd/{fh}")

仍然不是一个完全微不足道的问题。描述符可能仍处于打开和使用状态,而底层文件(名称;文件系统引用)已被删除。在

相关问题 更多 >