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
Lepaskan: 2024-12-09 00:33:11
asal
1037 orang telah melayarinya

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)
Salin selepas log masuk

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)
Salin selepas log masuk

Skrip Shell Setara

Persamaan baris arahan kod Python di atas ialah:

retcode = os.system("echo 'foo' >& /dev/null")
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan