У меня есть следующие три скрипта Python:
parent1.py
import subprocess, os, sys
relpath = os.path.dirname(sys.argv[0])
path = os.path.abspath(relpath)
child = subprocess.Popen([os.path.join(path, 'child.lisp')], stdout = subprocess.PIPE)
sys.stdin = child.stdout
inp = sys.stdin.read()
print(inp.decode())
родитель2.py:
import sys
inp = sys.stdin
print(inp)
ребенок.ру:
print("This text was created in child.py")
Если я вызову parent1.py с помощью:
python3 parent1.py
это дает мне, как и ожидалось, следующий результат:
This text was created with child.py
если я вызову parent2.py с помощью:
python3 child.py | python3 parent2.py
я получаю тот же результат. Но в первом примере я получаю вывод child.py в виде байтов, а во втором — непосредственно в виде строки. Почему это? Это просто разница между трубами python и bash или есть что-то, что я мог бы сделать иначе, чтобы избежать этого?