Ho uno script chiamato 1st.py
che crea un REPL (leggi-valuta-stampa-anello):Capire Popen.communicate
print "Something to print"
while True:
r = raw_input()
if r == 'n':
print "exiting"
break
else:
print "continuing"
ho poi lanciato 1st.py
con il seguente codice:
p = subprocess.Popen(["python","1st.py"], stdin=PIPE, stdout=PIPE)
e poi provato questo:
print p.communicate()[0]
non è riuscito, fornendo questo traceback:
Traceback (most recent call last):
File "1st.py", line 3, in <module>
r = raw_input()
EOFError: EOF when reading a line
Puoi spiegare cosa sta succedendo qui per favore? Quando uso p.stdout.read()
, si blocca per sempre.
puoi dirmi qual è la differenza tra stampa >> p.stdin, i e p.stdin.write (i) –
qui 'print' è' p.stdin.write (str (i) + "\ n"); p.stdin.flush() '. – jfs
grazie ... Un'altra cosa per favore dimmi cosa sta facendo questo bufsize = 1? Anche "-u" in Popen (["python", "-u", "1st.py"], stdin = PIPE, stdout = PIPE, bufsize = 1) –