python process capture stdout code example

Example 1: python run command and read output

#!/usr/bin/python
import subprocess, sys
## command to run - tcp only ##
cmd = "/usr/sbin/netstat -p tcp -f inet"
## run it ##
p = subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE)
## But do not wait till netstat finish, start displaying output immediately ##
while True:
    out = p.stderr.read(1)
    if out == '' and p.poll() != None:
        break
    if out != '':
        sys.stdout.write(out)
        sys.stdout.flush()

Example 2: python write subprocess stdout stderr to file

with open("stdout.txt","wb") as out, open("stderr.txt","wb") as err:
    subprocess.Popen("ls",stdout=out,stderr=err)