如果要用Python制作临时文件,Python的标准库中有一个名为tempfile的模块。如果要启动其他程序对该文件进行操作,请使用tempfile.mkstemp()创建文件,然后使用os.fdopen()访问mkstemp()为您提供的文件描述符。
顺便说一句,您说您是从Python程序运行命令吗?几乎可以肯定,您应该使用子流程模块。
因此,您可以非常愉快地编写如下代码:
import subprocess
import tempfile
import os
(fd, filename) = tempfile.mkstemp()
try:
tfile = os.fdopen(fd, "w")
tfile.write("Hello, world!\n")
tfile.close()
subprocess.Popen(["/bin/cat", filename]).wait()
finally:
os.remove(filename)
运行该cat
命令,您应该发现该命令运行良好,但是该临时文件已在该finally
块中删除。请注意,您必须删除mkstemp()返回自己的临时文件-库无法知道何时完成操作!
(编辑:我假设NamedTemporaryFile确实完成了您要执行的操作,但这可能不那么方便-在关闭临时文件对象时立即删除该文件,并在关闭该文件之前让其他进程打开该文件不适用于某些平台,尤其是Windows。对不起,我本人失败。)