Las opciones para popen
se pueden utilizar encall
args,
bufsize=0,
executable=None,
stdin=None,
stdout=None,
stderr=None,
preexec_fn=None,
close_fds=False,
shell=False,
cwd=None,
env=None,
universal_newlines=False,
startupinfo=None,
creationflags=0
Entonces...
subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml", "/tmp/video_xml"], stdout=myoutput)
Entonces puede hacer lo que quiera con myoutput
(que debería ser un archivo por cierto).
Además, puede hacer algo más parecido a una salida canalizada como esta.
dmesg | grep hda
sería:
p1 = Popen(["dmesg"], stdout=PIPE)
p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0]
Hay mucha información interesante y útil en la página del manual de Python .
subprocess.call(["echo", "1", ">>", "t.txt"], shell=True)
debería funcionar.shlex.quote
si está pasando datos posiblemente sucios a una subcapa.with open("blah.txt","w") as f: subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml", "/tmp/video_xml"], stdout=f)
@Skurmedel