Exécutez la commande unix sur python

Exécutez les commandes à l'aide du module de sous-processus. (* Ajouté à propos de la fonction subprocess.run (): 2/15 23:30)

Exécuter une commande

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é.

</ i> Exemple

import subprocess
res = subprocess.call('ls')
#=>Résultat de la commande ls
print res
#=>0 si la commande réussit

Exécutez la commande (si elle échoue, déclenchez CalledProcessError)

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.

</ i> Exemple

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.

Exécuter une commande et obtenir sa sortie

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.

</ i> Exemple

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.

Exécutez la commande 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.

</ i> Exemple


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.

</ i> Exemple

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 **.

</ i> Référence

Il y avait ʻos.systemutilisant le module os etcommands.getstatusoutput` utilisant le module commands, mais ils semblent maintenant obsolètes.

Recommended Posts