Banyak alatan baris perintah, seperti eSpeak, memaparkan output bertele-tele bersama-sama dengan tindakan yang dimaksudkan. Ini boleh mengacaukan shell, menjadikannya sukar untuk membaca output sebelumnya atau berinteraksi dengan gesaan.
Untuk skrip Python yang menggunakan alat sedemikian menggunakan modul subproses, menyenyapkan outputnya boleh meningkatkan kebolehbacaan dan kebolehgunaan. Satu kaedah yang berkesan ialah mengubah hala keluaran standard (STDOUT) dan ralat standard (STDERR) kepada peranti nol.
Untuk Python versi 3.3 dan ke atas, modul subproses menyediakan pemalar DEVNULL sebagai peranti nol. Dengan menghantar DEVNULL kepada argumen stdout dan stderr subprocess.call(), output subprocess ditindas dengan berkesan.
import subprocess subprocess.call(['echo', 'foo'], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT)
Dalam versi terdahulu daripada Python, termasuk 2.7, pemalar DEVNULL tidak tersedia. Sebaliknya, seseorang boleh membuka peranti null secara manual dan mengubah hala ke peranti itu.
import os FNULL = open(os.devnull, 'w') subprocess.call(['echo', 'foo'], stdout=FNULL, stderr=subprocess.STDOUT)
Persamaan baris arahan kod Python di atas ialah:
retcode = os.system("echo 'foo' >& /dev/null")
Dengan menggunakan teknik ini, anda boleh menyenyapkan output subproses verbose daripada skrip Python anda, memastikan shell bersih dan meningkatkan kebolehbacaan untuk interaksi selanjutnya.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menyekat Output Verbose daripada Subproses dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!