创build和从tempfile读取

有反正我可以写入临时文件,并将其包含在一个命令,然后closures/删除它。 我想执行命令,例如:some_command / tmp / some-temp-file。
提前谢谢了。

import tempfile temp = tempfile.TemporaryFile() temp.write('Some data') command=(some_command temp.name) temp.close() 

如果您需要一个带有名称的临时文件,则必须使用NamedTemporaryFile函数。 那么你可以使用temp.name 。 阅读http://docs.python.org/library/tempfile.html了解详情。;

完整的例子。

 import tempfile with tempfile.NamedTemporaryFile() as temp: temp.write('Some data') if should_call_some_python_function_that_will_read_the_file(): temp.seek(0) some_python_function(temp) elif should_call_external_command(): temp.flush() subprocess.call(["wc", temp.name]) 

更新 :如评论中所述,这可能无法在Windows中工作。 使用这个解决scheme的Windows

尝试这个:

 import tempfile import commands import os commandname = "cat" f = tempfile.NamedTemporaryFile(delete=False) f.write("oh hello there") f.close() # file is not immediately deleted because we # used delete=False res = commands.getoutput("%s %s" % (commandname,f.name)) print res os.unlink(f.name) 

它只是打印临时文件的内容,但这应该给你正确的想法。 请注意,在外部进程看到它之前,该文件是closures的( f.close() )。 这很重要 – 它确保所有的写入操作都被正确刷新(并且在Windows中,您没有locking文件)。 NamedTemporaryFile实例一旦被closures,通常会被删除。 因此delete=False位。

如果你想更多的控制过程,你可以尝试subprocess.Popen ,但它听起来像commands.getoutput可能就足够你的目的。

改用NamedTemporaryFile及其成员name 。 由于Unix文件系统的工作方式,普通的TemporaryFile甚至不能保证有一个名字。

您可以尝试编译该文件并执行字节码

http://docs.python.org/library/compiler.html

但编译器在Python 3.0中被删除