D'après les exemples dans la documentation sur subprocess.run()
il semble qu'il ne devrait pas y avoir de sortie de
subprocess.run(["ls", "-l"]) # doesn't capture output
Cependant, quand je l'essaye dans un python Shell la liste est imprimée. Je me demande si c'est le comportement par défaut et comment supprimer la sortie de run()
.
Pour supprimer la sortie, vous pouvez rediriger vers /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)
Si vous voulez capturer la sortie (à utiliser plus tard ou à analyser), vous devez utiliser 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)