Ho un lavoro piuttosto lungo, che viene eseguito per diversi minuti e quindi viene riavviato. Il compito uscite varie informazioni che mi cattura in questo modo:Come posso catturare l'output e mostrarlo allo stesso tempo con Python?
output = subprocess.Popen(cmd,stdout=subprocess.PIPE).communicate()
Il fatto è che sarà solo l'intera produzione alla volta. Mi piacerebbe mostrare l'output mentre il programma lo sta inviando allo stdout, mentre lo spingo ancora indietro in un buffer (ho bisogno di controllare l'output per la presenza di alcune stringhe). In Ruby lo farei in questo modo:
IO.popen(cmd) do |io|
io.each_line do |line|
puts line
buffer << line
end
end
Dato che non è stata specificata una dimensione del buffer, verrà aggiunto un buffer 4KB tra i due processi, in modo che di solito non si blocchino. –