subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml", "/tmp/video_xml"])
RIght now I have a script that I run. When I run it and it hits this line, it starts printing stuff because run.sh has prints in it.
How do I pipe this to a text file also? (And also print, if possible)
The options for
popen
can be used incall
So...
Then you can do what you want with
myoutput
(which would need to be a file btw).Also, you can do something closer to a piped output like this.
would be:
There's plenty of lovely, useful info on the python manual page.
If you want to write the output to a file you can use the stdout-argument of
subprocess.call
.It takes
None
,subprocess.PIPE
, a file object or a file descriptor. The first is the default, stdout is inherited from the parent (your script). The second allows you to pipe from one command/process to another. The third and fourth are what you want, to have the output written to a file.You need to open a file with something like
open
and pass the object or file descriptor integer tocall
:I'm guessing any valid file-like object would work, like a socket (gasp :)), but I've never tried.
As marcog mentions in the comments you might want to redirect stderr as well, you can redirect this to the same location as stdout with
stderr=subprocess.STDOUT
. Any of the above mentioned values works as well, you can redirect to different places.