以下哪项更正确?
fi, path = tempfile.mkstemp()
f = os.fdopen(fi, "w")
f.write(res)
f.close()
os.close(fi)
或:
fi, path = tempfile.mkstemp()
f = os.fdopen(fi, "w")
f.write(res)
f.close()
答案 0 :(得分:6)
检查f.fileno()
,它应与fi
相同。你应该只关闭那个文件描述符一次,所以第二个是正确的。
在Unix上,第一个导致错误:
>>> f.close()
>>> os.close(fi)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [Errno 9] Bad file descriptor
答案 1 :(得分:3)
如果在最新的Python上,您可以将其打高压到:
with os.fdopen(tempfile.mkstemp()[0]) as f:
f.write(res)
答案 2 :(得分:2)
如果您需要以下路径,请继续跟进最新答案:
f_handle, f_path = tempfile.mkstemp()
with os.fdopen(f_handle, 'w') as f:
f.write(res)
try:
# Use path somehow
some_function(f_path)
finally:
# Clean up
os.unlink(f_path)
答案 3 :(得分:1)
我愿意:
fi, path = tempfile.mkstemp()
f = os.fdopen(fi, "w")
try:
f.write(res)
finally:
f.close()
答案 4 :(得分:0)
如果你打算在上一个例子中写下你需要:
with os.fdopen(tempfile.mkstemp()[0], 'w') as f:
f.write(res)