Penindasan Output Subproses
Apabila menggunakan atur cara luar menggunakan perpustakaan subproses Python, output konsol mereka boleh menjadi kacau ganggu, terutamanya untuk aplikasi bertele-tele seperti eSpeak. Isu ini timbul apabila eSpeak mengeluarkan mesej diagnostik bersama audio yang dimaksudkan, mengacaukan shell dan menghalang interaksi seterusnya.
Untuk menangani masalah ini, kami boleh menggunakan teknik yang dikenali sebagai pengalihan keluaran. Dalam Python >= 3.3, peranti DEVNULL boleh digunakan untuk mengubah hala kedua-dua output standard dan aliran ralat ke destinasi nol, dengan berkesan menyenyapkannya:
import os import subprocess retcode = subprocess.call(['echo', 'foo'], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT)
Untuk Python < 3.3, termasuk 2.7, pendekatan berikut boleh digunakan:
FNULL = open(os.devnull, 'w') retcode = subprocess.call(['echo', 'foo'], stdout=FNULL, stderr=subprocess.STDOUT)
Kaedah ini bersamaan dengan menjalankan arahan shell berikut:
retcode = os.system("echo 'foo' > /dev/null")Teknik ini memastikan output yang tidak diingini daripada eSpeak ditindas, menjadikan cangkerang bersih dan bersedia untuk interaksi pengguna selanjutnya.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menyekat Output Subproses dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!