В Python 2.7, это работает и возвращает требуемую строку it works!
Python 3 подпроцесс блоки труб
process = subprocess.Popen(['/bin/bash'], shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
process.stdin.write('echo it works!\n')
print process.stdout.readline()
Когда я знаю, попробовать это в Python 3.4 она застревает в команде Readline
process = subprocess.Popen(['/bin/bash'], shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
process.stdin.write(bytes('echo it works!\n','UTF-8'))
print(process.stdout.readline().decode('UTF-8'))
Может быть, это помогает, http://stackoverflow.com/questions/7585435/best-way-to-convert-string-to-bytes-in-python-3 –
я с удивлением обнаружил, что добавление 'process.stdin.flush()' исправляет проблему. Я думал, что это будет строка буферизации. – tdelaney
Проверьте [это] (http://stackoverflow.com/questions/163542/python-how-do-i-pass-a-string-into-subprocess-popen-using-the-stdin-argument) и [это] (http://stackoverflow.com/questions/8652767/python3-subprocess-communicate-example). Также комментарий @ tdelaney ... –