I am using a python script to run a process using subprocess.Popen and simultaneously store the output in a text file as well as print it on the console. This is my code:
result = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) for line in result.stdout.readlines(): #read and store result in log file openfile.write("%s\n" %line) print("%s" %line) Above code works fine, but what it does is it first completes the process and stores the output in result variable. After that for loop stores the output as well as print it.
But i want the output at runtime (as my process can take hours to complete, i don't get any output for all these hours).
So is there any other function that gives me the output dynamically (at runtime), means as soon as the process gives first line, it should get printed.
fileobject to thestdout(orstdin, orstderr) argument. Then you have to poll that file.Subprocesswas invented to spare you that pain, but it looks like you have no choice. Good luck.result.stdoutas non blocking, this will allow to read in real time and if there is no data yet,IOErrorwill be raised