Below is my script which calls another script using below example and produces entire output after execution is completed while expectation is that it should produce live output as well as write in file at the same time.
What happening is that its not producing output line by line and printing entire output in the end.
./My_Tests.py ALL
TC 1 : PASSED
TC 2 : PASSED
Tatal Passed Tests : 2
Tatal Failed Tests : 0
My_Tests.py :
from subprocess import Popen, PIPE, STDOUT
with Popen("./tests.py", stdout=PIPE, stderr=STDOUT, bufsize=1, universal_newlines=True) as p, \
open('tests.log', 'ab') as file:
for line in p.stdout: # b'\n'-separated lines
print(line, end='') #new addition
sys.stdout.buffer.write(line)
file.write(line)
I also tried with below command but it prints only on Terminal and not saving output in file.
import subprocess
# Run command and redirect it by | tee to a file named out.txt
p = subprocess.Popen([command, '|', 'tee', 'out.txt'])
p.wait()