Я частично в состоянии сделать его работу с помощью subprocess
модуля. Файлы python -
1.py - Здесь вместо того, чтобы возвращать ввод, вы должны его распечатать.
def main():
print 'Input Your String : '
stri = input()
print stri
main()
2.py -
import sys
if __name__=='__main__':
for line in sys.stdin:
sys.stdout.write(line[::-1])
pipe.py -
import subprocess
import sys
p1 = subprocess.Popen(['python','1.py'] , stdout=subprocess.PIPE, stdin=sys.stdin)
output = p1.communicate()[0]
p2 = subprocess.Popen(['python','2.py'] , stdin=subprocess.PIPE, stdout=sys.stdout)
p2.communicate(output)[0]
В Pipe.py, мы сначала вызываем python 1.py
в то время как перенаправлять его стандартного ввода стандартного ввода основного сценария и перенаправления stdout для PIPE, поэтому мы можем получить выход в переменной output
.
Тогда мы называем, python 2.py
в то время как redirectings его на стандартный вывод основного сценария и перенаправляет его стандартный ввод в PIPE, а затем использовать функцию p2.communicate()
передать в output
переменных в качестве вклада в него.
Результат -
>> python pipe.py
Blah
: gnirtS ruoY tupnI
halB
Пожалуйста, обратите внимание, что его частично работает, как мы не видим приглашение от 1.py
. Если приглашение не нужно, мы также можем сделать -
1.py
def main():
stri = input()
print stri
main()
Тогда результат становится -
>> python pipe.py
I inputted something
gnihtemos dettupni I
любой ошибка или отслеживающие? –
Выполнение pipe.py ничего не показывает. терминал висит в течение некоторого времени. –
Вы дали какие-то значения? 'raw_input()' получит вход от самого пользователя. –