如何获取Python中tempfile.TemporaryFile的绝对路径?
如何获取tempfile.TemporaryFile的绝对路径?
无法直接获取tempfile.TemporaryFile创建的临时文件的实际路径——因为这个API设计的初衷就是创建匿名临时文件,系统不会为它分配可见的文件系统路径,它的name属性返回的只是文件描述符(整数)。
为什么会这样?
TemporaryFile创建的文件不会在文件系统中留下可被其他进程通过路径访问的条目,文件关闭后会立即被系统自动删除,全程没有公开的路径名。
替代解决方案
- 改用
tempfile.NamedTemporaryFile
这是最稳妥的方案,它会创建带有可见路径的临时文件,name属性直接返回完整的文件路径,完全符合你的需求。
示例代码:
import tempfile file = tempfile.NamedTemporaryFile(mode="w", encoding="utf-8") print(file.name) # 输出示例:/tmp/tmp6ran0e71 file.close() # 默认关闭后文件会被删除,若需保留可设置delete=False
- 类Unix系统下的临时 workaround(不推荐)
如果因特殊场景必须使用TemporaryFile,可以通过读取系统proc文件系统的符号链接获取路径,但仅适用于Linux/macOS:
import tempfile import os file = tempfile.TemporaryFile(mode="w", encoding="utf-8") try: # 读取/proc下的符号链接获取实际路径 path = os.readlink(f"/proc/self/fd/{file.name}") print(path) finally: file.close()
这种方法依赖系统特性,兼容性差,且匿名文件的路径随时可能失效,不建议在生产环境使用。
内容的提问来源于stack exchange,提问作者mon
相关产品推荐
相关产品推荐

