首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从mkstemp()获取文件对象?

如何从mkstemp()获取文件对象?
EN

Stack Overflow用户
提问于 2012-08-13 08:11:30
回答 3查看 6.7K关注 0票数 9

我尝试在Python 3中使用mkstemp:

代码语言:javascript
复制
Python 3.2.3 (default, Jun 25 2012, 23:10:56) 
[GCC 4.7.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from tempfile import mkstemp
>>> mkstemp()
(3, '/tmp/tmp080316')

根据documentation,元组的第一个元素应该是一个文件句柄。实际上,它是一个int类型。我如何获得一个合适的文件对象?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-13 08:14:54

mktemp的文档中,您可以看到一个如何按所需方式使用NamedTemporaryFile的示例:http://docs.python.org/dev/library/tempfile.html?highlight=mkstemp#tempfile.mktemp

代码语言:javascript
复制
>>> f = NamedTemporaryFile(delete=False)
>>> f
<open file '<fdopen>', mode 'w+b' at 0x384698>

这提供了与mkstemp相同的行为,但返回一个文件对象。

票数 10
EN

Stack Overflow用户

发布于 2012-08-13 08:43:14

我所知道的最好的方法是使用tempfile.NamedTemporaryFile,正如你在@tordek的回答中所看到的那样。

但是如果你有一个来自底层操作系统的原始FD,你可以这样做,把它变成一个文件对象:

代码语言:javascript
复制
f = open(fd, closefd=True)

这在Python 3中有效

票数 2
EN

Stack Overflow用户

发布于 2012-08-13 08:11:30

int表示操作系统级别的文件句柄。我真正需要的是一个更高级的文件对象。要创建一个,请使用:

代码语言:javascript
复制
os_handle = mkstemp()
f = open(mkstemp()[0])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11926855

复制
相关文章

相似问题

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