Führen Sie den Shell-Befehl aus und erhalten Sie die Ausgabe in Python

Salman Mehmood 15 Februar 2024
  1. Führen Sie CMD-Befehle aus einem Python-Skript aus und erhalten Sie die Ausgabe mit os.system()
  2. Führen Sie CMD-Befehle aus einem Python-Skript aus und erhalten Sie die Ausgabe mit dem Modul Subprocess
Führen Sie den Shell-Befehl aus und erhalten Sie die Ausgabe in Python

In diesem Artikel lernen wir, wie man mit Hilfe von os.system() cmd-Befehle aus einem Python-Skript ausführt. Außerdem erfahren wir, wie wir mit Hilfe des Moduls subprocess in Python einfacher cmd-Befehle aus dem Skript ausführen können.

Führen Sie CMD-Befehle aus einem Python-Skript aus und erhalten Sie die Ausgabe mit os.system()

Wir führen Terminalbefehle in der Eingabeaufforderung oder einem anderen Terminal für verschiedene Zwecke aus. Aber manchmal ist es notwendig, einen bestimmten Befehl innerhalb des Skripts auszuführen.

Wir werden sehen, wie wir sie direkt im Python-Skript ausführen können. Es ist praktisch, wenn wir mit der Serverkonfiguration arbeiten.

Lassen Sie uns Ihnen zunächst einige Befehle zeigen, die im Terminal funktionieren, wie z. B. dir, cd oder md.

Terminalbefehle in der Eingabeaufforderung

Jetzt werden wir sehen, wie wir dieselben in das Python-Skript aufnehmen können. Dazu importieren wir ein Modul namens os.

Das Modul os hilft uns, mit unserem Betriebssystem zu interagieren. Das os-Modul bietet umfassende Unterstützung für Betriebssystemaufgaben wie Datei- und Ordnerverwaltung.

Lassen Sie uns in den Code springen. Das system() ist eine Methode, die den Befehl in der gleichen Shell ausführt. Wenn wir ihm also einen Befehl geben, wird er fortfahren und ihn so ausführen, wie wir ihn im Terminal ausführen würden.

Die Systemfunktion kann auch eine Reihe von Befehlen ausführen. Es führt jeden Befehl aus, den Sie im Terminal ausführen können.

Wir verwenden den try-Block und innerhalb dieses Blocks die system()-Methode, die uns hilft, über das Terminal mit dem Betriebssystem zu interagieren. Wenn der try-Block den angegebenen Befehl nicht ausführt, gehen wir zum außer-Block.

Innerhalb der system()-Methode müssen wir unsere Befehle weitergeben, aber der Befehlstyp ist cmd. Dafür verwenden wir /k und innerhalb eines einfachen oder doppelten Anführungszeichens müssen wir unseren Befehl eingeben.

import os

try:
    os.system('cmd /k "date"')
except:
    print("Could not execute command")

Lassen Sie uns laufen und sehen, ob dies uns die genaue Ausgabe liefert.

The current date is: 24/08/2022
Enter the new date: (dd-mm-yy)

Wir können sehen, dass die Ausgabe dieselbe ist wie die Eingabeaufforderung.

Es gibt viele Befehle, die Sie ausführen können. Sie können Notepad oder Rechner öffnen oder Ihre Systeminformationen und vieles mehr anzeigen.

Öffnen Sie Anwendungen und zeigen Sie Systeminformationen aus dem Python-Skript an

Wenn Sie den Inhalt dessen abrufen möchten, was der Befehl zurückgibt, können Sie ihn mit der Funktion popen() des Moduls os abrufen. Innerhalb dieser Funktion können wir den Befehl übergeben und die Methode readlines() verwenden, um seinen Inhalt abzurufen.

Wir können viele Methoden verwenden, um saubere Daten zu erhalten. Es hängt von dir ab.

import os

DATA = os.popen("help").readlines()[5].strip("\n")
print(DATA)

Holen Sie sich den Inhalt, den der Befehl zurückgibt

Wir können diese Befehle überall verwenden, wie Klassen, Schleifen und Funktionen. Dies funktioniert genau so, wie es funktioniert, ohne es in eine Funktion zu packen.

import os


def CMD_Com():
    DATA = os.popen("help").readlines()[5].strip("\n")
    print(DATA)


CMD_Com()

Ausgang:

CACLS          Displays or modifies access control lists (ACLs) of files.

Führen Sie CMD-Befehle aus einem Python-Skript aus und erhalten Sie die Ausgabe mit dem Modul Subprocess

Die Interaktion mit Teilprozessen ist eine wesentliche Fähigkeit, die man haben muss. Die Verwendung des Moduls os wird nicht empfohlen, um einen Terminalbefehl innerhalb des Python-Skripts auszuführen.

Die Verwendung von os.system() zur Ausführung des Terminalbefehls ist eine sehr vereinfachte Art, einen Befehl in Python auszuführen.

Das os.system() hat eine eingeschränkte Funktionalität; Der richtige Weg ist die Verwendung eines Moduls namens subprocess, das es nicht zu schwierig macht, Terminalbefehle auszuführen. Mit dem Modul subprocess können wir alle Betriebssystembefehle ausführen, an denen wir gerade arbeiten.

Auf diese Weise können wir alle vorhandenen Befehle in einem Betriebssystem ausführen, z. B. das Öffnen von Notepad oder das Überprüfen des aktuellen Arbeitsverzeichnisses oder jede andere Operation, die wir mit dem Modul subprocess ausführen können.

import subprocess

# subprocess.Popen('notepad')
# subprocess.Popen('systeminfo')
subprocess.Popen("dir", shell=True)

Ausgang:

 Directory of C:\Users\Dell\Downloads\demo

24/08/2022  07:01 pm    <DIR>          .
24/08/2022  07:01 pm    <DIR>          ..
25/08/2022  01:47 am               460 demo.py
               1 File(s)            460 bytes
               2 Dir(s)  32,532,512,768 bytes free

Mehr über das Modul subprocess erfahren Sie hier.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn