У меня есть сценарий, названный 1st.py
, который создает REPL (чтение Eval-печать с обратной связью):Понимание Popen.communicate
print "Something to print"
while True:
r = raw_input()
if r == 'n':
print "exiting"
break
else:
print "continuing"
Затем я начал 1st.py
со следующим кодом:
p = subprocess.Popen(["python","1st.py"], stdin=PIPE, stdout=PIPE)
А потом попытался это:
print p.communicate()[0]
это не удалось, обеспечивая этот отслеживающий:
Traceback (most recent call last):
File "1st.py", line 3, in <module>
r = raw_input()
EOFError: EOF when reading a line
Не могли бы вы объяснить, что здесь происходит, пожалуйста? Когда я использую p.stdout.read()
, он висит навсегда.
Не могли бы вы рассказать мне, в чем разница между print >> p.stdin, i и p.stdin.write (i) –
здесь 'print' is' p.stdin.write (str (i) + "\ n"); p.stdin.flush() '. – jfs
спасибо ... Еще одна вещь, пожалуйста, скажите мне, что это bufsize = 1 делает? Также «-u» в Popen ([«python», «-u», «1st.py»], stdin = PIPE, stdout = PIPE, bufsize = 1) –