Las opciones para popen se puede usar en call 
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...
myoutput = open('somefile.txt', 'w')
subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml",  "/tmp/video_xml"], stdout=myoutput)
 
 Entonces puedes hacer lo que quieras con myoutput 
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 encantadora y útil en la página del manual de python.
 Si desea escribir la salida en un archivo, puede usar el argumento stdout de subprocess.call .
Se necesita
None(la salida estándar predeterminada se hereda del padre (su secuencia de comandos))subprocess.PIPE(le permite pasar de un comando/proceso a otro)- un objeto de archivo o un descriptor de archivo (lo que desea, que la salida se escriba en un archivo)
 
 Necesitas abrir un archivo con algo como open y pase el objeto o descriptor de archivo entero a call :
f = open("blah.txt", "w")
subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml",  "/tmp/video_xml"], stdout=f)
 Supongo que cualquier objeto similar a un archivo válido funcionaría, como un socket (jadeo :)), pero nunca lo he intentado.
 Como marcog menciona en los comentarios, es posible que también desee redirigir stderr, puede redirigir esto a la misma ubicación que stdout con stderr=subprocess.STDOUT . Cualquiera de los valores mencionados anteriormente también funciona, puede redirigir a diferentes lugares.