Python'da bir kabuk komut dosyasını çağırmaya çalışıyorum ancak bozuk boru hatasını bildirmeye devam ediyor (sonuç tamam, ancak STDERR'deki hata mesajını görmek istemiyorum). Ben nedenini kesin olarak belirlemiş ve bu şu pasajı olarak yeniden olabilir:Python: subprocess.call kırık boru
subprocess.call('cat /dev/zero | head -c 10 | base64', shell=True)
aaaaaaaaaaaaaa ==
kedi: yazma hatası: Broken boru
/dev/zero
, sonsuz akışıdır ama head -c 10
sadece ondan 10 bayt okur ve çıkar, sonra eşler boruyu kapattığı için kedi SIGPIPE alır. Komutu kabukta çalıştırdığımda kırık bir boru hatası mesajı yok, ancak python bunu neden gösteriyor?
Hata kaybolduktan:
sen subprocess.call içinpreexec_fn
argüman kullanabilirsinizcat
hata iletileri engellemek için Cat_% 28Unix% 29 # Useless_use_of_cat): 'subprocess.call ('head -c 10 dev/zero | base64', kabuk = True)' –@larsmans: bunu bir yanıt olarak koyabilirsiniz –
@ChrisMorgan: aslında, Cevabını şiddetle tercih ederim. –