Penindasan Output Subproses dalam Python
Dalam Python, subproses boleh digunakan untuk melaksanakan pelbagai arahan sistem. Walaupun subproses sedemikian mungkin menyediakan kefungsian yang diperlukan, verbositi yang wujud boleh mengganggu output dan menghalang kebolehbacaan. Khususnya, pertimbangkan contoh yang diberikan oleh pengguna:
import subprocess text = 'Hello World.' print text subprocess.call(['espeak', text])
Dalam keadaan ini, eSpeak menjana output audio yang diingini tetapi juga menghasilkan mesej ralat yang tidak diingini. Cangkang yang berselerak ini boleh menyukarkan untuk mengakses atau mentafsir teks bercetak. Malangnya, tiada pilihan yang didokumenkan untuk melumpuhkan verbositi eSpeak.
Untuk menangani isu ini, Python menawarkan penyelesaian yang mudah untuk menyekat output subproses, membenarkan pengguna mengekalkan cangkerang yang bersih dan bebas kekacauan:
Penyelesaian:
Ubah hala output subproses ke DEVNULL menggunakan yang berikut kod untuk Python >= 3.3:
import os import subprocess retcode = subprocess.call(['echo', 'foo'], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT)
Untuk versi Python di bawah 3.3, termasuk 2.7, gunakan kod di bawah:
FNULL = open(os.devnull, 'w') retcode = subprocess.call(['echo', 'foo'], stdout=FNULL, stderr=subprocess.STDOUT)
Teknik ini mencerminkan perintah shell berikut dengan berkesan:
retcode = os.system("echo 'foo' > /dev/null")
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menindas Output yang Tidak Diingini daripada Subproses dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!