I am running the following piece of code (call it batch.py)
for config in keystoneConfig:
cmdlist = generate_cmd_list(config)
print ' '.join(cmdlist)
subprocess.call(cmdlist)
And redirecting the output of batch.py to another file. i.e.
./batch.py > output.txt
But I realize that all the output from subprocess.call() goes before the print statement. Why is the output out of sync?
Python is block buffering its own output and not flushing it before
subprocess.call(), because you redirected its output to a file instead of the console; you would need to force line buffering or disable buffering, or manually flush before the subprocess call.