Llamar a la aplicación Java con “subproceso” de Python y leer el resultado de la aplicación Java

¿Cuál es la mejor manera de leer la salida (es decir, a través de System.out.println) de una aplicación Java que se llama desde Python con

subprocess.Popen("java MyClass", shell=True) 

¿Sin escribir y leer un archivo? (Usar Jython, etc. no es una solución posible)

 p1 = subprocess.Popen(["/usr/bin/java", "MyClass"], stdout=subprocess.PIPE) print p1.stdout.read() 

Acabo de encontrar la solución:

 p = subprocess.Popen("java MyClass", shell=True, stdout=subprocess.PIPE) output, errors = p.communicate() 

S.Mark’s también está bien!