Python Academy · Lektion

Befehle mit subprocess ausführen

Externe Programme ausführen

Lektion 1 von 413 Schritte

Befehle mit subprocess ausführen ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist subprocess?

Mit dem Modul subprocess kann Ihr Python-Programm externe Befehle und andere Programme ausführen, genau wie bei der Eingabe in einem Terminal.

import subprocess

result = subprocess.run(['echo', 'hello'])
print('return code:', result.returncode)

Grundlagen von subprocess.run

subprocess.run() ist der empfohlene Einstiegspunkt. Übergeben Sie den Befehl als Liste von Argumenten: zuerst den Programmnamen, danach jedes Argument einzeln.

import subprocess

result = subprocess.run(['echo', 'one', 'two'])
print('done with code', result.returncode)

Warum eine Liste statt einer Zeichenkette?

Durch die Übergabe einer Liste vermeiden Sie, dass die Shell Ihren Befehl parst. Dadurch verhindern Sie Probleme mit Anführungszeichen und Risiken durch Shell-Injection. Jedes Element ist ein Argument.

import subprocess

# Safe: each piece is its own argument
subprocess.run(['echo', 'a file with spaces.txt'])

Das CompletedProcess-Objekt

run() gibt ein CompletedProcess-Objekt zurück, das args, returncode und, falls erfasst, die Ausgabe enthält. Der Rückgabecode 0 bedeutet Erfolg.

import subprocess

cp = subprocess.run(['true'])
print('args:', cp.args)
print('returncode:', cp.returncode)

Rückgabecodes prüfen

Ein Rückgabecode ungleich null bedeutet normalerweise, dass der Befehl fehlgeschlagen ist. Sie können ihn nach dem Aufruf manuell überprüfen.

import subprocess

cp = subprocess.run(['ls', '/no/such/path'])
if cp.returncode != 0:
    print('command failed with', cp.returncode)

Bei Fehlern mit check=True eine Ausnahme auslösen

Übergeben Sie check=True, damit run() automatisch CalledProcessError auslöst, wenn der Befehl mit einem Rückgabecode ungleich null beendet wird.

import subprocess

try:
    subprocess.run(['false'], check=True)
except subprocess.CalledProcessError as e:
    print('failed with code', e.returncode)

Argumente übergeben

Zusätzliche Befehlsargumente sind einfach weitere Elemente der Liste. Hier listen wir ein Verzeichnis im Langformat auf.

import subprocess

subprocess.run(['echo', '-n', 'no newline'])
print()
print('above echo had -n flag')

Ein Timeout festlegen

Verwenden Sie timeout, um einen Befehl abzubrechen, der zu lange läuft. Dabei wird TimeoutExpired ausgelöst.

import subprocess

try:
    subprocess.run(['sleep', '5'], timeout=0.1)
except subprocess.TimeoutExpired:
    print('command took too long, aborted')

Arbeitsverzeichnis

Mit dem Argument cwd führen Sie den Befehl in einem bestimmten Verzeichnis aus, ohne das Arbeitsverzeichnis Ihres eigenen Programms zu ändern.

import subprocess

subprocess.run(['pwd'], cwd='/tmp')

Die Option shell=True

Bei shell=True übergeben Sie eine einzelne Befehlszeichenkette, die von der Shell interpretiert wird. Dadurch werden Pipes und Globs ermöglicht, aber bei nicht vertrauenswürdigen Eingaben ist dies riskant. Bevorzugen Sie die Listenform.

import subprocess

subprocess.run('echo hello && echo world', shell=True)

os.system vermeiden

Das alte os.system gibt nur einen Exit-Code zurück und bietet weder eine sichere Argumentübergabe noch die Erfassung der Ausgabe. subprocess.run ersetzt es in neuem Code vollständig.

import subprocess

# Modern, safe approach
cp = subprocess.run(['echo', 'modern way'])
print('exit code:', cp.returncode)

Kurztest

Testen Sie Ihr Verständnis der Befehlsausführung.

Rückblick

Sie haben gelernt, Befehle mit subprocess auszuführen:

  • subprocess.run([...]) führt ein externes Programm sicher aus.
  • Die Funktion gibt ein CompletedProcess-Objekt mit returncode zurück.
  • check=True löst bei einem Fehler eine Ausnahme aus; timeout bricht langsame Befehle ab.
  • Bevorzugen Sie die Listenform gegenüber shell=True.

Als Nächstes: die Ausgabe eines Befehls erfassen.

Kostenlos starten

Lerne Python mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
76
Lektionen
320

Häufig gestellte Fragen

Ist die Lektion „Befehle mit subprocess ausführen“ kostenlos?

Ja — der vollständige Text von „Befehle mit subprocess ausführen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Befehle mit subprocess ausführen“?

Externe Programme ausführen Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Python Academy zu starten?

Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Befehle mit subprocess ausführen“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?

Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Befehle mit subprocess ausführen
  2. Ausgaben erfassen
  3. Umgebung und os-Modul
  4. shutil für Dateioperationen
← Zurück zu Python Academy