Try this:
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)
It just prints the content of the temp file, but that should give you the right idea. Note that the file is closed (f.close()
) before the external process gets to see it. That's important -- it ensures that all your write ops are properly flushed (and, in Windows, that you're not locking the file). NamedTemporaryFile
instances are usually deleted as soon as they are closed; hence the delete=False
bit.
If you want more control over the process, you could try subprocess.Popen
, but it sounds like commands.getoutput
may be sufficient for your purposes.