为何Python的tempfile.mkstemp()返回整数而非文件句柄?
关于tempfile.mkstemp返回值的疑问解答
你完全没有理解误区哦!问题的核心是对「操作系统级句柄」的具体形式认知差异~
关键解释:
- 文档里提到的「与os.open()返回的类型一致」,而
os.open()本身返回的就是整数类型的文件描述符(File Descriptor),这正是操作系统层面用来标识和跟踪打开文件的句柄,和Python内置open()函数返回的文件对象(比如<_io.TextIOWrapper name='xxx' mode='r' encoding='UTF-8'>)不是同一个概念。 - 你在交互中看到的
temp[0]是整数,这完全符合文档描述——这个整数就是操作系统级的文件句柄,系统通过它来定位对应的打开文件。 - 如果需要把这个整数句柄转换成Python常用的文件对象,可以使用
os.fdopen()方法,示例代码如下:import tempfile import os temp = tempfile.mkstemp(suffix='.html') file_obj = os.fdopen(temp[0], 'w') # 将文件描述符转为Python文件对象 file_obj.write('Hello, temp file!') file_obj.close()
内容的提问来源于stack exchange,提问作者Kurt Peek
相关产品推荐
相关产品推荐

