我有以下三個Python腳本:bash和蟒蛇管之間的區別
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 2013-05-08 17:50:30