一个元组,其中包含打开文件的OS级句柄(os.open()将返回)和该文件的绝对路径名,按顺序排列。
如何将操作系统级句柄转换为文件对象?
documentation for os.open()声明:
要在“文件对象”中包装文件描述符,请使用fdopen()。
所以我试着:
>>> import tempfile
>>> tup = tempfile.mkstemp()
>>> import os
>>> f = os.fdopen(tup[0])
>>> f.write('foo\n')
Traceback (most recent call last):
File "<stdin>", line 1, in ?
IOError: [Errno 9] Bad file descriptor
发布于 2008-10-03 19:47:17
您可以使用
os.write(tup[0], "foo\n")
来写入句柄。
如果想要打开句柄进行写入,则需要添加"w"模式
f = os.fdopen(tup[0], "w")
f.write("foo")
发布于 2009-08-18 19:44:32
下面是如何使用with语句完成此操作:
from __future__ import with_statement
from contextlib import closing
fd, filepath = tempfile.mkstemp()
with closing(os.fdopen(fd, 'w')) as tf:
tf.write('foo\n')
发布于 2008-10-03 20:00:15
您忘记在fdopen()中指定打开模式('w')。默认值为'r',导致write()调用失败。
我认为mkstemp()创建的文件是只读的。使用'w‘调用fdopen可能会重新打开它以进行写入(您可以重新打开由mkstemp创建的文件)。
https://stackoverflow.com/questions/168559
复制相似问题