Si está hablando del intérprete de Python o CMD.exe que es el 'padre' de su secuencia de comandos, entonces no, no es posible. En cada sistema similar a POSIX (ahora está ejecutando Windows, parece, y eso podría tener alguna peculiaridad que desconozco, YMMV) cada proceso tiene tres flujos, entrada estándar, salida estándar y error estándar. predeterminado Bu (cuando se ejecuta en una consola) éstos se dirigen a la consola, pero redirección es posible usando la notación de la tubería:
python script_a.py | python script_b.py
Esto ata el flujo de salida estándar de la escritura de una a la corriente de entrada estándar de escritura B. El error estándar todavía va a la consola en este ejemplo. Vea el artículo en standard streams en Wikipedia.
Si estamos hablando de un proceso hijo, puede iniciarlo desde pitón como tal (entrada estándar es también una opción si desea una comunicación bidireccional):
import subprocess
# Of course you can open things other than python here :)
process = subprocess.Popen(["python", "main.py"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
x = process.stderr.readline()
y = process.stdout.readline()
process.wait()
Ver el módulo de Python para obtener información subprocess en la gestión del proceso. Para la comunicación, las tuberías process.stdin y process.stdout se consideran estándar file objects.
Para su uso con tubos, la lectura de la entrada estándar como lassevk sugirió que haría algo como esto:
import sys
x = sys.stderr.readline()
y = sys.stdin.readline()
sys.stdin y sys.stdout son objetos de archivo estándar como se señaló anteriormente, se define en la sys módulo. También es posible que desee echar un vistazo al módulo pipes.
La lectura de datos con readline() como en mi ejemplo es una forma ingenua de obtener datos. Si el resultado no está orientado a la línea o es indeterminista, probablemente desee consultar polling, que desafortunadamente no funciona en Windows, pero estoy seguro de que hay alguna alternativa.
Tenga en cuenta que al invocar Python utilizando subprocess.Popen() a menudo es útil pasar el indicador "-u", que deshabilita el almacenamiento en búfer en stdin/stdout/stderr. Python no autoflush stdout cuando el niño comienza a leer stdin, si la salida ha sido redirigida a un conducto, por lo que puede terminar bloqueando para siempre la lectura de la salida que está almacenada. Me encontré con este problema tratando de envolver/automatizar pdb. –