Python'da bir program yazmaya çalışıyorum ve bir .exe dosyasını çalıştırması söylendi. Bu .exe dosyası çalıştırıldığında çok fazla veri tükürür ve ekrana yazdırılan belirli bir satıra ihtiyacım var. Eminim subprocess.popen
ya da benzer bir şey kullanmam gerektiğinden eminim ama alt süreçlere yeniyim ve hiçbir fikrim yok. Bunu yapmak benim için kolay bir yol var mı? Teşekkürler!! BöyleBir alt işlemin stdout çıktısını nasıl alabilirim?
7
A
cevap
17
şey: Eğer süreç yürütülüyor tamamlandıktan sonra çıkış baskı ilgileniyorsanız
import subprocess
process = subprocess.Popen(["yourcommand"], stdout=subprocess.PIPE)
result = process.communicate()[0]
23
Paolo'nun çözümü @ mükemmeldir. İşlem çalışırken çıktıyı sorgulamak istediğinizde, bunu şu şekilde yapmanız gerekir:
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
while True:
out = process.stdout.readline(1)
if out == '' and process.poll() != None:
break
if out.startswith('myline'):
sys.stdout.write(out)
sys.stdout.flush()
İlgili konular
- 1. Alt işlemin çıktısını yakalama.Popen() burun ile
- 2. Alt işlemin bir alt işlemin tamamen başlatıldığını bildirme
- 3. Bir alt işlemin formu
- 4. Python: Alt işlemin stdout'unu blokaj dışı bir şekilde nasıl okur?
- 5. Ruby'de alt işlemin akış çıkışı
- 6. Curl çıktısını stdout ve günlük dosyalarına yeniden yönlendirin
- 7. C - Bir alt fonksiyonun çıktısını nasıl önleyebilirim?
- 8. Yumurtlama yaptığım bir işlemin umaskını nasıl ayarlayabilirim?
- 9. Bir alt işlemin stderr ve stdoutunu izleme Python
- 10. alt sorgunun çıktısını sonuçlandırır mı?
- 11. Commons Exec ile bir komutun çıktısını nasıl alabilirim?
- 12. Python'da yalnızca cwd'nin alt klasörlerini nasıl alabilirim
- 13. Bir işlemin sınamalarını okuma zamanları
- 14. Tomcat'de stdout çıktısı nasıl kaydedilir?
- 15. Neden bir dosyaya alt işlem stdout sırasına yazılır?
- 16. İşlemin
- 17. Bir işlemin önceliğini nasıl değiştiririm?
- 18. Python çoklu işlem modülü kullanılarak başlatılan bir alt işlemin ayrılması
- 19. Bir alt işlemin çalışma dizinini çocuk işleminden alın
- 20. C dilinde nasıl alt yazı alabilirim? Örneğin
- 21. Bir işlemin belleğini dökün
- 22. Kısmen C# uygulamasından oluşturulan başka bir işlemin standart çıktısını kısmen okuyor
- 23. Java'da bir dizgiye yönlendiril stdout
- 24. Okuma stdout
- 25. VBA alt programımı bir animasyonda aramak için Powerpoint'i nasıl alabilirim?
- 26. Bir işlemin stdin'i bir işlem kimliğiyle nasıl edinebilirim?
- 27. ssh ile başlatılan bir işlemin PID'sini alın.
- 28. Uyarı: Tanımlanmamış sabit STDOUT kullanımı - varsayılan 'STDOUT'
- 29. Bir işlemin stdout'unu başka bir dizinin stdinine nasıl yönlendirilir?
- 30. Bir komutun çıktısını bir diziye nasıl atayabilirim?
Belirli bir çizgiyi nasıl okurum? 0 olduğu yer burası mı? Ve evet işlem bittikten sonra çıktı çıktı almakla ilgileniyorum. Ayrıca "yourcommand" e sahip exe uzantısı oraya gidiyor mu? – Tyler
"result", "yourcommand" ın tüm çıktısı olacaktır. Ardından, aradığınız çizgiyi bulmak için bu dizeyi (veya Py3.0'daki bayt nesnesini) işleyebilirsiniz. –
[0], döndürülen tuple'ın ilk elemanı (stdout, stderr) anlamına gelir; Bir dizge olan sonucu istediğiniz gibi işleyebilirsiniz. belirli bir çizgiyi bulmak için. "Komutunuz", komutunuz * yoldaki * olmayan (en azından * nix) bir komutun tam yoludur. – miku