我有以下三个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())
parent2.py:
import sys
inp = sys.stdin
print(inp)
child.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管道之间的区别,还是我可以采取其他措施来避免这种情况?