首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python从文件描述符int获取文件路径(从os.open返回)

Python从文件描述符int获取文件路径(从os.open返回)
EN

Stack Overflow用户
提问于 2019-10-03 19:38:20
回答 1查看 2K关注 0票数 4

我正在使用fusepy,并且需要将文件描述符转换回文件对象,这样才能获得原始文件路径

从繁琐的示例中,当创建一个文件时,会返回一个文件描述符-例如:

代码语言:javascript
复制
def open(self, path, flags):
    print("open:", path)
    return os.open(path, flags)

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

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

代码语言:javascript
复制
f = os.fdopen(fh)

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-03 20:58:08

由于这似乎满足了需要,我将暂时将其作为答案发布。一个人可以通过f.bufferf.buffer.raw访问底层对象(不是问题中提到的惊喜,这取决于所使用的Python版本,在v2中这看起来不同),但这仍然无助于访问打开文件时使用的文件名。注意:这也可以在调用进程中发生,并且描述符可以由python进程继承。

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

代码语言:javascript
复制
os.readlink(f"/proc/self/fd/{fh}")

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58218363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档