Questo è un seguito fino a this question, ma se voglio passare un argomento a stdin
a subprocess
, come posso ottenere l'output in tempo reale? Questo è ciò che attualmente ho; Ho anche provato a sostituire Popen
con call
dal modulo subprocess
e questo porta solo alla sospensione dello script.stampa stdout in tempo reale da un sottoprocesso che richiede stdin
from subprocess import Popen, PIPE, STDOUT
cmd = 'rsync --rsh=ssh -rv --files-from=- thisdir/ servername:folder/'
p = Popen(cmd.split(), stdout=PIPE, stdin=PIPE, stderr=STDOUT)
subfolders = '\n'.join(['subfolder1','subfolder2'])
output = p.communicate(input=subfolders)[0]
print output
Nella prima domanda cui non ho dovuto passare stdin
mi è stato suggerito di usare p.stdout.readline
, non non c'è spazio lì per qualcosa di tubo stdin
.
Addendum: Questo funziona per il trasferimento, ma vedo l'output solo alla fine e mi piacerebbe vedere i dettagli del trasferimento mentre sta accadendo.
se invece si è interessati a vedere l'uscita poi basta rilascia 'stdout = PIPE'. – jfs