I持って、次の3つのPythonスクリプト:はbashと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パイプの違いか、これを避けるために何かできることがありますか?
(http://stackoverflow.com/questions/3999114/linux-pipe-into-python-ncurses-script- [これを試してください] stdin-and-termios?answertab = votes#tab-top) – scott