我有以下三个 python 脚本:
父1.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)
孩子.py:
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 管道之间的区别还是我可以做些什么来避免这种情况?