Pour invoquer une commande depuis un script, si les valeurs retournées sur stdout et stderr n'ont pas d'importance, le plus simple:
from os import system as run_command # La commande a exécuter cmd=r'whereis snmpget' # res sauvegarde la valeur de retour de la commande res = run_command(cmd)
Python 3.5 introduit la méthode subprocess.run() recommandée quand c'est possible
import subprocess cpo = subprocess.run(['/path/to/command', 'arg1', 'arg2'])
Si l'option check=True est présente, une exception sera levée en cas de retour non null de la commande invoquée:
import subprocess try: cpo = subprocess.run(['/usr/bin/false'], capture_output=True, encoding='utf8', check=True) except subprocess.CalledProcessError: print(r'execption capturée, on continue')
Syntaxe à utiliser en version 3.5:
import subprocess cpo = subprocess.run(['/patho/to/command', 'args'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) # l'attribut cpo.stdout est de type bytes il faut le décoder print(cpo.stdout.decode('utf8'))
La version 3.6 introduit les paramètres capture_output et encoding:
import subprocess cpo = subprocess.run(['/usr/bin/false'], capture_output=True, encoding='utf8') print(cpo.stdout)