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

Bagaimanakah saya boleh menyekat Output Subproses dalam Python?

Susan Sarandon
Susan Sarandonasal
2024-12-16 19:22:11642semak imbas

How Can I Suppress Subprocess Output in Python?

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!

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