Terminal-Ausgabe in Python abfangen
Ich möchte hier etwas Ähnliches wie die zweite Antwort machen (aber nicht ganz ähnlich):Simulieren Sie einen Strg-C-Tastatur-Interrupt in Python, während Sie unter Linux arbeiten
Es ist viel einfacher und ich denke, ich vermisse nur etwas. Angenommen, ich möchte in einem Python-Skript einfach "ping" aufrufen und es nach dem 10. Mal beenden. Ich versuche es wie über den obigen Link zu tun:
p = subprocess.Popen(['ping', 'google.com'], stdout=subprocess.PIPE)
for line in p.stdout:
print line
if re.search('10', line):
break
os.kill(p.pid, signal.SIGINT)
Aber es geht nicht.
Und ich möchte auch, dass die reguläre Ausgabe von 'ping' angezeigt wird. Wie mache ich das?
EDIT: Es ist eigentlich kein "Ping", den ich machen möchte. Ich verwende es nur als Beispiel für einen Befehl mit kontinuierlicher Ausgabe, den ich mit der Zeit beenden möchte.
Insbesondere verwende ich eine alte Version von BitTorrent (v5.0.9 ab der 3. Antwort hier:Wo finde ich den BitTorrent-Quellcode?) und ich rufe es per Python-Skript auf. Die bittorrent-console.py ist eine einfache Terminalversion, daher 'console'. Es werden regelmäßig mehrere Zeilen ausgegeben. So etwas wie:
saving: filename
file size: blah
percent done: 100.0
blah: blahblah
Ich rufe es an durch:
subprocess.call(['./bittorrent-console.py', 'something.torrent'])
Ich möchte es automatisch beenden, wenn 100,0 in "Prozent erledigt:" angezeigt werden.
BEARBEITEN: Ich verwende CentOS, Python 2.6.