Ben şu üç piton komut:partisiydi ve piton boruları arasındaki fark
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")
Aşağıdakilerle parent1.py'yi ararsam:
python3 parent1.py
beklenen aşağıdaki çıkışı gibi bana verir:
This text was created with child.py
i ile parent2.py ararsanız:
python3 child.py | python3 parent2.py
i aynı çıktı elde edin. Ama ilk örnekte, child.py'nin çıktısını bayt olarak alıyorum ve ikincisini doğrudan bir dizge olarak alıyorum. Bu neden? Python ve bash boruları arasında sadece bir fark var mı yoksa bunu önlemek için yapabileceğim bir şey var mı?
[Bu deneyin] (http://stackoverflow.com/questions/3999114/linux-pipe-into-python-ncurses-script-: Sen Unicode veri sağlamak için
child.stdout
boruyu sarmak için birio.TextIOWrapper()
instance kullanabilirsiniz stdin-and-termios? answertab = oy # tab-top) – scott