Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menindas Output yang Tidak Diingini daripada Subproses dalam Python?

Bagaimanakah Saya Boleh Menindas Output yang Tidak Diingini daripada Subproses dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-12-16 04:42:16391semak imbas

How Can I Suppress Unwanted Output from Subprocesses in Python?

Penindasan Output Subproses dalam Python

Dalam Python, subproses boleh digunakan untuk melaksanakan pelbagai arahan sistem. Walaupun subproses sedemikian mungkin menyediakan kefungsian yang diperlukan, verbositi yang wujud boleh mengganggu output dan menghalang kebolehbacaan. Khususnya, pertimbangkan contoh yang diberikan oleh pengguna:

import subprocess
text = 'Hello World.'
print text
subprocess.call(['espeak', text])

Dalam keadaan ini, eSpeak menjana output audio yang diingini tetapi juga menghasilkan mesej ralat yang tidak diingini. Cangkang yang berselerak ini boleh menyukarkan untuk mengakses atau mentafsir teks bercetak. Malangnya, tiada pilihan yang didokumenkan untuk melumpuhkan verbositi eSpeak.

Untuk menangani isu ini, Python menawarkan penyelesaian yang mudah untuk menyekat output subproses, membenarkan pengguna mengekalkan cangkerang yang bersih dan bebas kekacauan:

Penyelesaian:

Ubah hala output subproses ke DEVNULL menggunakan yang berikut kod untuk Python >= 3.3:

import os
import subprocess

retcode = subprocess.call(['echo', 'foo'], 
    stdout=subprocess.DEVNULL,
    stderr=subprocess.STDOUT)

Untuk versi Python di bawah 3.3, termasuk 2.7, gunakan kod di bawah:

FNULL = open(os.devnull, 'w')
retcode = subprocess.call(['echo', 'foo'], 
    stdout=FNULL, 
    stderr=subprocess.STDOUT)

Teknik ini mencerminkan perintah shell berikut dengan berkesan:

retcode = os.system("echo 'foo' > /dev/null")

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menindas Output yang Tidak Diingini 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