Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah saya boleh menyekat Output Verbose daripada Subproses dalam Python?

Bagaimanakah saya boleh menyekat Output Verbose daripada Subproses dalam Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-09 00:33:111017semak imbas

How Can I Suppress Verbose Output from Subprocesses in Python?

Meredam Output Berlebihan daripada Subproses

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.

Mengubah Hala Output untuk Python 3.3

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)

Mengubah Hala Output untuk Python 2 dan Lower

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)

Skrip Shell Setara

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn