戻り値 - python subprocess 標準出力



subprocess.run()の出力を抑制する方法は? (1)

この質問にはすでに答えがあります。

subprocess.run()ドキュメントの例からは、からの出力はないはずです。

subprocess.run(["ls", "-l"])  # doesn't capture output

しかし、私がPythonシェルでそれを試したとき、リストは印刷されます。 これがデフォルトの動作かどうか、およびrun()出力を抑制する方法はどうだろうか。


出力を抑制するために/dev/nullリダイレクトでき/dev/null

import os
import subprocess

with open(os.devnull, 'w') as devnull:
    subprocess.run(['ls', '-l'], stdout=devnull)
    # The above only redirects stdout...
    # this will also redirect stderr to /dev/null as well
    subprocess.run(['ls', '-l'], stdout=devnull, stderr=devnull)
    # Alternatively, you can merge stderr and stdout streams and redirect
    # the one stream to /dev/null
    subprocess.run(['ls', '-l'], stdout=devnull, stderr=subprocess.STDOUT)

(後で使用したり解析したりするために)出力をキャプチャしたい場合は、 subprocess.PIPEを使用する必要があります。

import subprocess
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)
print(result.stdout)

# To also capture stderr...
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
print(result.stdout)
print(result.stderr)

# To mix stdout and stderr into a single string
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
print(result.stdout)




subprocess