You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3中如何获取临时文件路径而非返回整数类型?

获取临时文件的字符串路径(替代返回的整数描述符)

看起来你是在用Python的tempfile模块时遇到了返回整数而不是路径的问题——这个整数其实是文件描述符(操作系统用来标识打开文件的整数ID),大概率是因为你用了tempfile.mkstemp()却只取了它的第一个返回值。下面给你两种靠谱的方法来获取字符串类型的完整临时文件路径,满足你后续用os.stat(或者处理音频时长)的需求:

方法1:正确解析mkstemp()的返回值

tempfile.mkstemp()实际上返回一个元组(文件描述符, 完整路径字符串),你之前拿到的15就是这个元组的第一个元素。只需要解构元组就能拿到路径:

import tempfile

# 解构元组,分别拿到文件描述符和路径
temp_fd, temp_file_path = tempfile.mkstemp(suffix='.wav')  # suffix指定后缀,确保是wav文件

# temp_file_path就是你要的字符串类型完整路径,比如/Users/FooBar/.../xxx.wav
print(type(temp_file_path))  # 输出 <class 'str'>

拿到路径后,就可以正常使用os.stat:

import os
file_stat = os.stat(temp_file_path)
# 注意:os.stat只能拿到文件大小、修改时间等元数据,如果要获取wav的播放时长,你可能需要用wave模块或pydub这类音频处理库,比如:
# import wave
# with wave.open(temp_file_path, 'rb') as wf:
#     duration = wf.getnframes() / wf.getframerate()

方法2:使用更易用的NamedTemporaryFile

如果你不想手动处理文件描述符,tempfile.NamedTemporaryFile是更友好的选择——它返回一个类文件对象,直接通过.name属性就能获取字符串类型的完整路径,还支持上下文管理器自动管理资源:

import tempfile

# 设置delete=False,避免文件关闭后被自动删除(后续需要读取的话必须加这个参数)
with tempfile.NamedTemporaryFile(suffix='.wav', delete=False) as temp_file:
    # 在这里写入你的wav文件内容,比如 temp_file.write(your_wav_binary_data)
    temp_file_path = temp_file.name  # 直接获取字符串路径
    print(temp_file_path)  # 输出类似/Users/FooBar/Python3.6/.../THE_TEMP_FILE.wav

# 后续用路径做操作
import os
file_stat = os.stat(temp_file_path)

# 用完记得手动删除临时文件(因为设置了delete=False)
os.unlink(temp_file_path)

这个方法的优势是更符合Python的优雅写法,不需要手动关闭文件描述符,减少资源泄漏的风险。

补充说明

  • 如果你之前误拿了文件描述符(那个整数15),可以通过os.fdopen(temp_fd)把它转换成文件对象,但这不如直接拿到路径方便。
  • 临时文件的默认存储路径由系统决定(比如macOS的/tmp目录),但上面两种方法返回的都是完整的绝对路径,完全满足你的需求。

内容的提问来源于stack exchange,提问作者user9311010

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:54:58