Exécutez les commandes à l'aide du module de sous-processus. (* Ajouté à propos de la fonction subprocess.run (): 2/15 23:30)
subprocess.call(cmd)
Utilisation de base. Exécutez simplement la commande donnée en argument. Si l'exécution de la commande réussit, «0» est renvoyé.
import subprocess
res = subprocess.call('ls')
#=>Résultat de la commande ls
print res
#=>0 si la commande réussit
subprocess.check_call(cmd)
Exécute la commande donnée en argument.
Si l'exécution de la commande réussit, «0» est renvoyé.
Lorsqu'il échoue, il déclenche une exception CalledProcessError, vous pouvez donc le gérer avec try-except
.
import subprocess
try:
res = subprocess.check_call('dummy')
except:
print "Error."
#=> Error.
Si une commande qui ne peut pas être exécutée est donnée, la gestion des exceptions peut être effectuée.
subprocess.check_output(cmd)
Exécute la commande donnée en argument.
Si l'exécution de la commande réussit, la sortie est renvoyée.
Comme check_call, il déclenche une exception CalledProcessError quand il échoue, vous pouvez donc le gérer avec try-except
.
import subprocess
try:
res = subprocess.check_output('ls')
except:
print "Error."
print res
#=>Résultat d'exécution de ls
Jusqu'à ce point, il est possible d'exécuter des commandes simples. Enfin, à propos de l'exécution de commandes avec des arguments.
subprocess.call(*args)
La même chose s'applique à check_call et check_output. Spécifiez les commandes et les arguments par tableau.
import subprocess
args = ['ls', '-l', '-a']
try:
res = subprocess.check_call(args)
except:
print "Error."
#=> "ls -l -a"Résultat d'exécution de
subprocess.run(cmd)
(Reflète le commentaire reçu de @MiyakoDev)
Depuis Python3.5, la fonction subprocess.run () qui combine les trois commandes ci-dessus a été ajoutée.
import subprocess
import sys
res = subprocess.run(["ls", "-l", "-a"], stdout=subprocess.PIPE)
sys.stdout.buffer.write(res.stdout)
Exemple de code pour obtenir la sortie. La sortie est renvoyée sous forme de ** chaîne d'octets **.
Il y avait ʻos.systemutilisant le module os et
commands.getstatusoutput` utilisant le module commands, mais ils semblent maintenant obsolètes.
Recommended Posts