Python3 subprocess communicate example

Rhys picture Rhys · Dec 28, 2011 · Viewed 17.1k times · Source

I'm new to subprocessing.

I just need a really simple win32 example of communicate() between a parent.py and child.py. A string sent from parent.py to child.py, altered by child.py and sent back to parent.py for print() from parent.py.

I'm posting this because examples I have found end up either not being win32 or not using a child which just confuses me.

Thanks for you help.

Answer

Greg Hewgill picture Greg Hewgill · Dec 28, 2011

Here is a simple example as per your requirements. This example is Python 3.x (slight modifications are required for 2.x).

parent.py

import subprocess
import sys

s = "test"
p = subprocess.Popen([sys.executable, "child.py"],
                     stdin=subprocess.PIPE,
                     stdout=subprocess.PIPE)
out, _ = p.communicate(s.encode())
print(out.decode())

child.py

s = input()
s = s.upper()
print(s)

I wrote and tested this on Mac OS X. There is no platform-specific code here, so there is no reason why it won't work on Win32 also.