根据
tempfile.mkstemp
文档 ,mkstemp()
返回一个包含打开文件的操作系统级句柄(与 os.open()
返回的一样)和该文件的绝对路径名的元组。
然而,从这些 shell 命令中看来,元组的第一个成员是一个整数,而不是文件句柄:
>>> temp = tempfile.mkstemp(suffix='.html')
>>> temp
(17, '/var/folders/dc/nv4yxcrd0zqd2dtxlj281b740000gn/T/tmpktmb2gjg.html')
>>> type(temp[0])
int
我必须使用open(temp[1])
来获取文件句柄吗?为什么它没有返回一个文件句柄?
int
),请使用更高级别的类,比如tempfile.NamedTemporaryFile
。这将为您提供一个打开的文件对象,对象的.name
属性将提供名称。额外福利:当关闭时,临时文件会自动删除(或者如果您想保留它,则构造时使用delete=False
;由您决定是否删除)。NamedTemporaryFile
是基于mkstemp
实现的,因此同样安全。 - ShadowRanger