ホームページ > バックエンド開発 > Python チュートリアル > Python でサブプロセスからの不要な出力を抑制するにはどうすればよいですか?

Python でサブプロセスからの不要な出力を抑制するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-16 04:42:16
オリジナル
390 人が閲覧しました

How Can I Suppress Unwanted Output from Subprocesses in Python?

Python でのサブプロセス出力の抑制

Python では、サブプロセスを使用してさまざまなシステム コマンドを実行できます。このようなサブプロセスは必要な機能を提供しますが、その固有の冗長性により出力が乱雑になり、読みやすさが損なわれる可能性があります。特に、ユーザーが提供した例を考えてみましょう:

import subprocess
text = 'Hello World.'
print text
subprocess.call(['espeak', text])
ログイン後にコピー

この例では、eSpeak は目的のオーディオ出力を生成しますが、不要なエラー メッセージも生成します。このシェルの乱雑さにより、印刷されたテキストへのアクセスや解釈が困難になる可能性があります。残念ながら、eSpeak の冗長性を無効にするオプションは文書化されていません。

この問題に対処するために、Python はサブプロセスの出力を抑制する便利なソリューションを提供し、ユーザーがクリーンで整理されたシェルを維持できるようにします。

解決策:

次のコードを使用して、サブプロセスの出力を DEVNULL にリダイレクトします。 Python >= 3.3:

import os
import subprocess

retcode = subprocess.call(['echo', 'foo'], 
    stdout=subprocess.DEVNULL,
    stderr=subprocess.STDOUT)
ログイン後にコピー

2.7 を含む 3.3 より前の Python バージョンの場合は、以下のコードを使用します。

FNULL = open(os.devnull, 'w')
retcode = subprocess.call(['echo', 'foo'], 
    stdout=FNULL, 
    stderr=subprocess.STDOUT)
ログイン後にコピー

この手法は、次のシェル コマンドを効果的にミラーリングします。

retcode = os.system("echo 'foo' > /dev/null")
ログイン後にコピー

以上がPython でサブプロセスからの不要な出力を抑制するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート