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 サイトの他の関連記事を参照してください。