Soruma basit: pexpect kullanarak stderr'deki belirli çıktıları görmek için expect()
yapabilir miyim? Görünüşe göre pexpect.spawn()
sadece stdout üzerindeki çıkışı beklemek için kullanılabilir.Pexpect'ten stderr ayıklanıyor
ütopik örnek:
import pexpect child = pexpect.spawn(...) child.expect("hi", fd=pexpect.STDERR)
Ya nesir
, "standart hataya dize 'hi' bekliyoruz."Ben dokümanlar böyle bir tesisin herhangi bir söz bulamadım ama child
örneği bir stderr
niteliği sahip olduğuna dikkat do ... İstediğimi yarı başarır
Bir kesmek stderr'yi yöneltmek olan spawn argümanlarında stdout yapmak için normal expect()
'u kullanabiliriz. Daha iyi bir yol olmalı?
Alkış
kuşaklar için
pexpect bir pty içinde alt işlemi çalışır, bu nedenle tüm standart akışları stdout ve stderr) bu pili işaret eder ve kontrol süreci bu tek pty'ye yazar ve okur. Stdout ve stderr 'e ayrı ayrı erişemez: Prosesin normal bir terminalde çalıştırılması gibi çıkışta ara verilir. Ayrı erişime ihtiyacınız varsa, işlemi "subprocess.Popen" ile başlatabilir ve daha sonra sadece bir boruya bakmak için "pexpect.fdpexpect.fdspawn" komutunu kullanabilirsiniz. –
Teşekkürler. İşe yarayacak gibi geliyor. Bir örneğiniz var mı ve cevap olarak işaretleyeceğim :) –