2

Pythonで以下を実行するにはどうすればよいですか?

/some/path/and/exec arg > /dev/null

私はこれを得た:

call(["/some/path/and/exec","arg"])

execプロセスの出力をに挿入し/dev/null、Pythonプロセスの印刷出力を通常どおりに保持するにはどうすればよいですか?のように、すべてをstdoutにリダイレクトしませんか?

4

1 に答える 1

7

Python 3.3以降の場合は、次を使用してsubprocess.DEVNULLください。

call(["/some/path/and/exec","arg"], stdout=DEVNULL, stderr=DEVNULL)

stdoutこれにより、との両方がリダイレクトされることに注意してくださいstderr。リダイレクトするだけの場合はstdoutsh行が示すように)、その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モジュールがなかったので、合理的に行くことができる限り遡ります。

于 2013-01-06T13:09:33.697 に答える