Führen Sie Befehle aus Python aus

Einführung

Wie führe ich einen Befehl von Python aus und erhalte das Ergebnis? Wenn Sie Befehle direkt aus dem Skript ausführen können, können Sie sich die Mühe ersparen, Befehle auszuführen, um die Ergebnisse nach Abschluss der Skriptausführung zu verarbeiten.

Unterprozessmodul

Es gibt verschiedene Möglichkeiten, Befehle aus Python auszuführen, aber dieses Mal werde ich erklären, wie das Unterprozessmodul verwendet wird.

call Übergeben Sie den Befehl, den Sie ausführen möchten, im Listenformat, und der Prozess wird ausgeführt. Bei Erfolg wird 0 zurückgegeben.

In [1]: import subprocess
In [2]: subprocess.call(["ls", "-la"])
Out[2]: 0

Das Setzen von shell = True ist praktisch, da Sie den Befehl wie folgt ausführen können.

In [3]: subprocess.call("ls -la", shell=True)
Out[3]: 0

check_call

Wenn Sie einen Befehl übergeben, der in call nicht vorhanden ist, wird nur der Befehl error nicht gefunden angezeigt. Wenn Sie jedoch check_call verwenden, können Sie eine Ausnahme namens CalledProcessError auslösen.

Bei Ausführung mit check_call

Ich habe eine Ausnahme namens "CalledProcessError".

In [5]: subprocess.check_call("lddd", shell=True)
/bin/sh: lddd: command not found
---------------------------------------------------------------------------
CalledProcessError                        Traceback (most recent call last)
<ipython-input-5-00471ece15fa> in <module>()
----> 1 subprocess.check_call("lddd", shell=True)

/Users/SoichiroMurakami/.pyenv/versions/anaconda-2.4.0/lib/python2.7/subprocess.pyc in check_call(*popenargs, **kwargs)
    539         if cmd is None:
    540             cmd = popenargs[0]
--> 541         raise CalledProcessError(retcode, cmd)
    542     return 0
    543

CalledProcessError: Command 'lddd' returned non-zero exit status 127

Bei Ausführung per Anruf

Es wird nur "Befehl nicht gefunden" zurückgegeben.

In [6]: subprocess.call("lddd", shell=True)
/bin/sh: lddd: command not found
Out[6]: 127

check_output

Sie können einen Befehl mit einem Argument ausführen und die Ausgabe als Zeichenfolge abrufen. Dies ist praktisch, wenn Sie das Ergebnis der Befehlsausführung in einem Skript verwenden möchten.

In [9]: cal_output =  subprocess.check_output("cal", shell=True)

In [10]: print cal_output
November 2016
Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Andere Methoden

Dies ist eine Ergänzung für andere Befehlsausführungsmethoden als das Unterprozessmodul. Es scheint zwei Methoden zu geben, die derzeit jedoch nicht empfohlen werden.

Recommended Posts

Führen Sie Befehle aus Python aus
Führen Sie den Befehl von Python aus
[Python] Unix-Befehl ausführen (Unterprozess)
Laden Sie den Befehl von yml mit Python und führen Sie ihn aus
Führen Sie das Python-Skript aus der Batchdatei aus
Führen Sie Python-Code über die C # -GUI aus
SQL zu SQL
MeCab von Python
Aufrufbefehle von Python (Windows Edition)
[Hinweis] Führen Sie Python-Code aus Excel aus (xlwings)
Verwenden Sie thingspeak aus Python
Berühren Sie MySQL in Python 3
Bedienen Sie Filemaker von Python aus
Verwenden Sie fließend Python
Greifen Sie über Python auf Bitcoind zu
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
Python aus oder importieren
Führen Sie die Python-Datei automatisch aus
Verwenden Sie MySQL aus Python
Führen Sie Python aus Excel aus
Installieren Sie Python von der Quelle
Bedienen Sie Neutronen von Python!
Verwenden Sie MySQL aus Python
[Node-RED] Führen Sie Python in einer virtuellen Anaconda-Umgebung von Node-RED aus [Anaconda] [Python]
Betreiben Sie LXC von Python aus
Grundlegende Python-Befehlsnotizen
Manipuliere Riak aus Python
Erzwinge Python aus Fortran
Verwenden Sie BigQuery aus Python.
[Python] Von Stdin lesen
Verwenden Sie mecab-ipadic-neologd von Python
Führen Sie die Python-Funktion von Powershell aus (wie Sie Argumente übergeben).
So führen Sie einen Befehl mit einem Unterprozess in Python aus
Mit Python abflachen
Rufen Sie CPLEX von Python aus auf (DO cplex)
Deep Python hat von DEAP gelernt
Post von Python nach Slack
Grammatikfunktionen aus Python3.6 hinzugefügt
Flirte von PHP nach Python
Stellen Sie MeCab in Python 3 zur Verfügung
Informationen von tweet_id (Python)
OCR aus PDF in Python
Führen Sie das Illustrator-Skript von Python aus
Verwenden Sie MySQL von Anaconda (Python)
Anaconda aktualisiert von 4.2.0 auf 4.3.0 (python3.5 aktualisiert auf python3.6)
Studie aus Python Hour4: Objektorientiert ②
Fragen Sie Athena von Lambda Python ab
Greifen Sie über Python auf Oracle DB zu
Studie aus Python Hour3: Funktionen
Starten / Stoppen von GCE über Python
Stoppen Sie Omxplayer vom Python-Code
Führen Sie den Unix-Befehl auf Python aus
Wechseln Sie von Python2.7 zu Python3.6 (centos7)
Stellen Sie von Python aus eine Verbindung zu SQLite her
Installieren Sie pyenv von Homebrew, installieren Sie Python von pyenv
Studie aus Python Hour4: Objektorientiert ①
Python-Namenskonvention (ab PEP8)
Externe Befehlsausführung in Python
Mit Skype benachrichtigen Sie mit Skype von Python!