Pythonで以下を実行するにはどうすればよいですか?
/some/path/and/exec arg > /dev/null
私はこれを得た:
call(["/some/path/and/exec","arg"])
exec
プロセスの出力をに挿入し/dev/null
、Pythonプロセスの印刷出力を通常どおりに保持するにはどうすればよいですか?のように、すべてをstdoutにリダイレクトしませんか?
Python 3.3以降の場合は、次を使用してsubprocess.DEVNULL
ください。
call(["/some/path/and/exec","arg"], stdout=DEVNULL, stderr=DEVNULL)
stdout
これにより、との両方がリダイレクトされることに注意してくださいstderr
。リダイレクトするだけの場合はstdout
(sh
行が示すように)、そのstderr=DEVNULL
部分を省略します。
古いバージョンとの互換性が必要な場合は、を使用できますos.devnull
。したがって、これは2.6以降(3.3を含む)のすべてで機能します。
with open(os.devnull, 'w') as devnull:
call(["/some/path/and/exec","arg"], stdout=devnull, stderr=devnull)
または、2.4以降(まだ3.3を含む)の場合:
devnull = open(os.devnull, 'w')
try:
call(["/some/path/and/exec","arg"], stdout=devnull, stderr=devnull)
finally:
devnull.close()
2.4より前は、subprocess
モジュールがなかったので、合理的に行くことができる限り遡ります。