Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

Thanks for you help.

like image 251
Rhys Avatar asked Dec 28 '11 06:12

Rhys


1 Answers

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.

like image 97
Greg Hewgill Avatar answered Oct 22 '22 08:10

Greg Hewgill