Im Prinzip also:
Code: Alles auswählen
subprocess.Popen(foo, stdout=subprocess.PIPE, stderr=sys.stdout.fileno()
Code: Alles auswählen
subprocess.Popen(foo, stdout=subprocess.PIPE, stderr=sys.stdout.fileno()
Code: Alles auswählen
from __future__ import print_function
import subprocess
import sys
import os
def start():
print("+++start()")
popen_args = [
sys.executable, os.path.abspath(__file__), "run",
]
print("Call:", popen_args)
process = subprocess.Popen(popen_args,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
universal_newlines=True,
)
stdout, stderr = process.communicate()
retcode = process.poll()
print("return code: %r" % retcode)
print(" **** stdout:\n", stdout)
print(" **** stderr:\n", stderr)
print("+++start() - END")
def run():
print("+++run()")
for i in range(10):
if i % 2:
sys.stdout.write("stdout %i\n" % i)
sys.stdout.flush()
else:
sys.stderr.write("stderr %i\n" % i)
sys.stderr.flush()
print("+++rund() - END")
if __name__ == "__main__":
if not "run" in sys.argv:
start()
else:
run()
Code: Alles auswählen
+++start()
Call: ['/usr/bin/python3', '/home/jens/test.py', 'run']
return code: 0
**** stdout:
stderr 0
+++run()
stdout 1
stderr 2
stdout 3
stderr 4
stdout 5
stderr 6
stdout 7
stderr 8
stdout 9
+++rund() - END
**** stderr:
None
+++start() - END
Code: Alles auswählen
+++start()
Call: ['/usr/bin/python3', '/home/jens/test.py', 'run']
return code: 0
**** stdout:
stderr 0
stderr 2
stderr 4
stderr 6
stderr 8
+++run()
stdout 1
stdout 3
stdout 5
stdout 7
stdout 9
+++rund() - END
**** stderr:
None
+++start() - END