Если вы говорите о интерпретаторе python или CMD.exe, который является «родителем» вашего скрипта, то нет, это невозможно. В каждой POSIX-подобной системе (кажется, что теперь вы работаете с Windows, и это может иметь некоторую причуду, о которой я не знаю, YMMV), каждый процесс имеет три потока, стандартный ввод, стандартный вывод и стандартную ошибку. По умолчанию (при запуске в консоли) они направляются на консоль, но перенаправление возможно с использованием обозначения канала:
python script_a.py | python script_b.py
Это связывает стандартный поток вывода сценария a со стандартным потоком ввода сценария B. В этом примере стандартная ошибка по-прежнему поступает на консоль. См. Статью о стандартных потоках в Википедии.
Если вы говорите о дочернем процессе, вы можете запустить его из python следующим образом (stdin также является опцией, если вы хотите двустороннюю связь):
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()
См. Модуль Python subprocess для получения информации об управлении процессом. Для связи каналы process.stdin и process.stdout считаются стандартными файловыми объектами .
Для использования с трубами, чтение из стандартного ввода как lassevk предлагает вам сделать что-то вроде этого:
import sys
x = sys.stderr.readline()
y = sys.stdin.readline()
sys.stdin и sys.stdout являются стандартными файловыми объектами, как указано выше, определенными в модуле sys . Возможно, вы захотите взглянуть на модуль pipe .
Чтение данных с помощью readline (), как в моем примере, является довольно наивным способом получения данных. Если выходные данные не являются линейно-ориентированными или недетерминированными, вы, вероятно, захотите изучить опрос , который, к сожалению, не работает в Windows, но я уверен, что есть какая-то альтернатива.