Catching Terminal Output w Pythonie
Chcę zrobić coś podobnego do drugiej odpowiedzi tutaj (ale nie do końca):Symuluj przerwanie klawiatury Ctrl-C w Pythonie podczas pracy w systemie Linux
To znacznie prostsze i myślę, że coś mi brakuje. Powiedzmy, że ze skryptu Pythona chcę po prostu wywołać polecenie „ping” i zakończyć go po raz dziesiąty. Próbuję to zrobić jak z powyższego linku:
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)
Ale to nie działa.
Chcę też, aby wyświetlało się regularne wyjście „ping”. Jak mam to zrobic?
EDIT: To nie jest tak naprawdę „ping”, który chcę zrobić. Używam go po prostu jako przykładu polecenia z ciągłym wyjściem, które z czasem chciałbym zakończyć.
Dokładniej mówiąc, używam starej wersji BitTorrenta (wersja 5.0.9 od trzeciej odpowiedzi tutaj:Gdzie znaleźć kod źródłowy BitTorrent?) i dzwonię do niego przez skrypt Pythona. Bittorrent-console.py to prosta wersja terminala, stąd „konsola”. Okresowo generuje wiele linii. Coś jak:
saving: filename
file size: blah
percent done: 100.0
blah: blahblah
Właściwie nazywam to:
subprocess.call(['./bittorrent-console.py', 'something.torrent'])
Chcę zakończyć go automatycznie, gdy zobaczę, że jest to 100% w procentach:.
EDIT: Pracuję w CentOS, Python 2.6.