如果要在Python中生成临时文件,Python的标准库中有一个名为tempfile的模块。如果要启动其他程序对文件进行操作,请使用tempfile.mkstemp()创建文件,使用os.fdopen()访问mkstemp()提供的文件描述符。
顺便说一句,你说你在运行一个Python程序的命令?您几乎肯定应该使用subprocess模块。
因此,您可以非常愉快地编写如下代码: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完全按照您的要求执行,但这可能不太方便—当temp file对象关闭时,该文件会立即被删除,而让其他进程在您关闭之前打开该文件在某些平台(尤其是Windows)上不会起作用。对不起,我失败了。)