I mają następujące trzy scenariusze: pytonaRóżnica między rurami basha pytona
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")
Jeśli zadzwonię do parent1.py z:
python3 parent1.py
daje mi jak oczekiwany następujący wynik:
This text was created with child.py
jeśli zgłoszę parent2.py z:
python3 child.py | python3 parent2.py
uzyskać ten sam wynik. Ale w pierwszym przykładzie otrzymuję dane wyjściowe pliku child.py jako bajty, a w drugim otrzymuję je bezpośrednio jako ciąg znaków. Dlaczego to? Czy jest to tylko różnica między python i bash pipe lub czy jest coś, co mógłbym zrobić inaczej, aby tego uniknąć?
[Try This] (http://stackoverflow.com/questions/3999114/linux-pipe-into-python-ncurses-script- stdin-and-termios? answerertab = głosów # tab-top) – scott