Prueba esto:
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)
Simplemente imprime el contenido de las el archivo temporal, pero eso debería darte la idea correcta. Tenga en cuenta que el archivo está cerrado (f.close()
) antes de que el proceso externo pueda verlo. Eso es importante: garantiza que todas tus operaciones de escritura se vacíen correctamente (y, en Windows, que no estás bloqueando el archivo). NamedTemporaryFile
las instancias generalmente se eliminan tan pronto como se cierran; de ahí el bit delete=False
.
Si desea tener más control sobre el proceso, puede probar subprocess.Popen
, pero parece que commands.getoutput
puede ser suficiente para sus propósitos.
Asegúrese de lavar el archivo antes de pasar a alguna_comando – balki
@balki o puede pasar 'bufsize = 0' para que no esté almacenado. –