私は Ubuntu で eSpeak を使用しており、メッセージを印刷して読み上げる Python 2.7 スクリプトを持っています。
import subprocess
text = 'Hello World.'
print text
subprocess.call(['espeak', text])
eSpeak は目的のサウンドを生成しますが、いくつかのエラー (ALSA lib...、ソケット接続なし) でシェルが乱雑になり、以前印刷された内容を簡単に読み取ることができません。終了コードは 0 です。
残念ながら、冗長性をオフにするオプションは文書化されていないため、視覚的にのみそれを無音にし、開いているシェルをクリーンな状態に保ち、さらに操作できるようにする方法を探しています。
これどうやってするの?
見る出力なしのPython os.systemに固有のアプローチについては、os.system
- ただし、最新のコードでは通常、subprocess
代わりにライブラリを使用する必要があります。
ベストアンサー1
python >= 3.3 の場合、出力を DEVNULL にリダイレクトします。
import os
import subprocess
retcode = subprocess.call(['echo', 'foo'],
stdout=subprocess.DEVNULL,
stderr=subprocess.STDOUT)
Python <3.3 (2.7 を含む) の場合は以下を使用します。
FNULL = open(os.devnull, 'w')
retcode = subprocess.call(['echo', 'foo'],
stdout=FNULL,
stderr=subprocess.STDOUT)
これは実質的に、次のシェル コマンドを実行するのと同じです。
retcode = os.system("echo 'foo' &> /dev/null")