Search code examples
pythonsubprocesspipe

Python3 subprocess communicate example


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.


Solution

  • 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.