Führen Sie Befehle mit dem Unterprozessmodul aus. (* Hinzugefügt über subprocess.run () Funktion: 2/15 23:30)
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.
import subprocess
res = subprocess.call('ls')
#=>Ergebnis des Befehls ls
print res
#=>0, wenn der Befehl erfolgreich ist
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.
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.
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.
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.
subprocess.call(*args)
Gleiches gilt für check_call und check_output. Geben Sie Befehle und Argumente nach Array an.
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.
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.
Es gab "os.system" mit dem OS-Modul und "command.getstatusoutput" mit dem Befehlsmodul, aber sie scheinen jetzt veraltet zu sein.
Recommended Posts