Führen Sie den Unix-Befehl auf Python aus

Führen Sie Befehle mit dem Unterprozessmodul aus. (* Hinzugefügt über subprocess.run () Funktion: 2/15 23:30)

Führen Sie einen Befehl aus

subprocess.call(cmd)

Grundlegende Verwendung. Führen Sie einfach den als Argument angegebenen Befehl aus. Wenn die Befehlsausführung erfolgreich ist, wird "0" zurückgegeben.

</ i> Beispiel

import subprocess
res = subprocess.call('ls')
#=>Ergebnis des Befehls ls
print res
#=>0, wenn der Befehl erfolgreich ist

Führen Sie den Befehl aus (falls dies fehlschlägt, rufen Sie CalledProcessError auf).

subprocess.check_call(cmd)

Führt den als Argument angegebenen Befehl aus. Wenn die Befehlsausführung erfolgreich ist, wird "0" zurückgegeben. Wenn dies fehlschlägt, wird eine CalledProcessError-Ausnahme ausgelöst, sodass Sie sie mit "try-exception" behandeln können.

</ i> Beispiel

import subprocess
try:
    res = subprocess.check_call('dummy')
except:
    print "Error."
#=> Error. 

Wenn ein Befehl gegeben wird, der nicht ausgeführt werden kann, kann die Ausnahmebehandlung durchgeführt werden.

Führen Sie einen Befehl aus und erhalten Sie seine Ausgabe

subprocess.check_output(cmd)

Führt den als Argument angegebenen Befehl aus. Wenn die Befehlsausführung erfolgreich ist, wird die Ausgabe zurückgegeben. Wie bei check_call wird eine CalledProcessError-Ausnahme ausgelöst, wenn dies fehlschlägt, sodass Sie sie mit "try-exception" behandeln können.

</ i> Beispiel

import subprocess
try:
    res = subprocess.check_output('ls')
except:
    print "Error."
print res
#=>Ausführungsergebnis von ls

Bis zu diesem Punkt ist es möglich, einfache Befehle auszuführen. Schließlich über das Ausführen von Befehlen mit Argumenten.

Führen Sie den Befehl mit Argumenten aus

subprocess.call(*args)

Gleiches gilt für check_call und check_output. Geben Sie Befehle und Argumente nach Array an.

</ i> Beispiel


import subprocess
args = ['ls', '-l', '-a']
try:
    res = subprocess.check_call(args)
except:
    print "Error."
#=> "ls -l -a"Ausführungsergebnis von

subprocess.run(cmd) (Reflektiert Kommentare von @MiyakoDev) Ab Python3.5 wurde die Funktion subprocess.run () hinzugefügt, die die oben genannten drei Befehle kombiniert.

</ i> Beispiel

import subprocess
import sys

res = subprocess.run(["ls", "-l", "-a"], stdout=subprocess.PIPE)
sys.stdout.buffer.write(res.stdout)

Beispielcode für die Ausgabe. Die Ausgabe wird als ** Byte-Zeichenfolge ** zurückgegeben.

</ i> Referenz

Es gab "os.system" mit dem OS-Modul und "command.getstatusoutput" mit dem Befehlsmodul, aber sie scheinen jetzt veraltet zu sein.

Recommended Posts