8 Praktische Anwendungen für das Python-os-Modul
Sprunglinks
- Verzeichnisoperationen verwalten
- Das Dateisystem navigieren
- Dateipfade verwalten
- Dateiberechtigungen verwalten
- Arbeiten mit Umgebungsvariablen
- Systembefehle ausführen
- Systeminformationen abrufen
- Durchlaufen eines Verzeichnisbaums
Besorgt darüber, plattformunabhängige Programme in Python zu erstellen? Das os-Modul ist Pythons direkte Verbindung zu deinem Betriebssystem. Betrachte es als das Schweizer Taschenmesser für alltägliche Aufgaben rund um dein System. Lassen Sie uns ansehen, welche Tricks das os-Modul auf Lager hat.
Verzeichnisoperationen verwalten
Wir laden oft schnell viele Dateien aus dem Internet herunter und speichern sie alle in einem einzigen Ordner, nur um sie später manuell zu organisieren. Vielleicht möchten Sie einen Ordner für PDFs, einen anderen für Bilder und einen weiteren für Textdateien haben. Bevor Sie diese Dateien verschieben können, müssen Sie sicherstellen, dass die richtigen Verzeichnisse existieren (oder sie erstellen, falls sie nicht existieren). Mit einigen nützlichen Funktionen aus Pythons os-Modul können Sie diese Organisation mithilfe eines Skripts automatisieren.
import os
# Create a folder for PDFs if it does not exist
if not os.path.exists("pdfs"):
os.mkdir("pdfs")
# Create a nested folder structure for images
os.makedirs("images/2025/events", exist_ok=True)
# List the contents of the current directory
print("Current directory contents:", os.listdir("."))
# Remove an empty directory
os.rmdir("old_folder") # only works if "old_folder" has no files inside
Der Codeausschnitt os.path.exists("pdfs") prüft, ob der Ordner bereits existiert, sodass wir keine Fehler beim Aufrufen von os.mkdir() bekommen. os.makedirs(..., exist_ok=True) ist eine bequeme Möglichkeit, verschachtelte Verzeichnisse zu erstellen. Das Flag exist_ok=True verhindert einen Fehler, falls der Ordner bereits existiert. os.listdir(".") listet alles im aktuellen Ordner auf ("." bedeutet aktuelles Verzeichnis). os.rmdir("old_folder") entfernt ein leeres Verzeichnis, löscht es jedoch nicht, wenn sich noch Dateien darin befinden. Mit nur wenigen Zeilen Code können Sie bereits gängige Aufgaben zur Dateiorganisation automatisieren.
Das Dateisystem navigieren
Angenommen, Sie möchten einige Dateien verarbeiten, die in einem Unterverzeichnis Ihres Projekts gespeichert sind. Anstatt überall Pfade fest zu codieren, ist es oft sauberer, in diesen Ordner zu wechseln, Ihre Arbeit zu erledigen und dann wieder zurückzukehren. Auf diese Weise kann Ihr Skript von überall ausgeführt werden, ohne dass es zu Fehlern kommt. Das os-Modul bietet einige praktische Funktionen dafür.
import os
# Show the starting directory
print("Starting directory:", os.getcwd())
# Navigate to the "logs" folder
os.chdir("logs")
print("Now inside:", os.getcwd())
# List files inside "logs"
print("Log files:", os.listdir("."))
# Go back to the original directory
os.chdir("..")
print("Back to:", os.getcwd())
os.getcwd() zeigt Ihnen, wo Ihr Skript derzeit ausgeführt wird. os.chdir("logs") verschiebt das Arbeitsverzeichnis in den Ordner "logs/", sodass alle Dateioperationen standardmäßig dort stattfinden. os.listdir(".") listet erneut auf, was sich im aktuellen Verzeichnis befindet. Diesmal den Inhalt von "logs/." Schließlich bringt os.chdir("..") uns wieder zurück in das übergeordnete Verzeichnis.
Diese Art der Navigation ist besonders nützlich, wenn Ihre Skripte Dateien aus verschiedenen Ordnern verarbeiten müssen, Sie aber nicht mit langen, absoluten Pfaden jonglieren möchten. Sie hält Ihren Code sauberer und flexibler.
Dateipfade verwalten
Lassen Sie mich mit einer Geschichte beginnen. Ich arbeitete an einem Softwareprojekt mit einem Freund von mir. Ich benutzte Linux, während er Windows verwendete. Zu dieser Zeit wusste ich noch nicht, wie man Dateipfade universell verwendet. Also haben wir beide die Dateipfade unserer jeweiligen Systeme fest codiert.
Angenommen, Sie möchten, dass Ihr Skript unabhängig vom Betriebssystem funktioniert, auf dem es ausgeführt wird: Windows, macOS oder Linux. Das Problem? Dateipfade sehen auf jedem System anders aus (C:\Users\... unter Windows vs. /home/... unter Linux). Hier kommen die os.path-Dienstprogramme ins Spiel. Sie behandeln Pfade auf eine sichere und plattformübergreifende Weise, sodass Sie sich keine Sorgen um Schrägstriche oder Trenner machen müssen. So könnte das in der Praxis aussehen:
import os
# Build a path to a new report
folder = "reports"
filename = "summary.txt"
path = os.path.join(folder, filename)
print("Full path:", path)
# Check if the folder exists
if not os.path.exists(folder):
os.mkdir(folder)
# Absolute path (so you know exactly where your file will go)
print("Absolute path:", os.path.abspath(path))
# Split a path into directory and filename
directory, file = os.path.split(path)
print("Directory:", directory)
print("File:", file)
# Get just the filename directly
print("Basename:", os.path.basename(path))
# Split a filename into name and extension
name, ext = os.path.splitext(file)
print("Name:", name)
print("Extension:", ext)
Also, was passiert hier?
os.path.join(folder, filename)stellt sicher, dass der Pfad für das System korrekt ist. Unter Windows verwendet es Rückwärtsschrägstriche (reports\summary.txt); unter Linux und macOS verwendet es Vorwärtsschrägstriche (reports/summary.txt).os.path.exists(folder)überprüft, ob ein Ordner oder eine Datei bereits vorhanden ist, bevor sie erstellt wird.os.path.abspath(path)ermittelt den absoluten Pfad, was nützlich ist, wenn Sie sicher sein müssen, wo Ihre Datei gespeichert wird.os.path.split(path)teilt den Pfad in zwei Teile: Ordner und Datei.os.path.basename(path)ist eine Abkürzung, um nur den Dateinamen aus einem vollständigen Pfad zu erhalten.os.path.splitext(file)hilft dabei, den Namen von der Erweiterung zu trennen.
Die Verwaltung von Pfaden auf diese Weise macht Ihren Code portabel und wesentlich weniger fehleranfällig. Sie müssen sich keine Sorgen machen, ob Sie den richtigen Schrägstrich eingegeben haben.
Dateiberechtigungen verwalten
Stellen Sie sich Folgendes vor. Sie haben eine Datei von irgendwo heruntergeladen, aber wenn Sie versuchen, sie zu öffnen oder auszuführen, stellen Sie fest, dass sie nicht die richtigen Berechtigungen hat. Vielleicht möchten Sie eine Textdatei schreibgeschützt machen oder sicherstellen, dass eine Python-Datei ausführbar ist, bevor Sie sie ausführen. Hier kommt das os-Modul ins Spiel, das Ihnen hilft, direkt mit Dateiberechtigungen zu interagieren.
Hier ist ein Beispiel in Aktion.
import os
import stat
file_path = "example.txt"
# Check if the file is readable and writable
if os.access(file_path, os.R_OK) and os.access(file_path, os.W_OK):
print(f"{file_path} is readable and writable")
# Make the file read-only
os.chmod(file_path, stat.S_IREAD)
print(f"{file_path} is now read-only")
# Make the file executable (useful for scripts or binaries)
os.chmod(file_path, stat.S_IREAD | stat.S_IEXEC)
print(f"{file_path} is now executable")
os.access(file_path, os.R_OK) prüft, ob die Datei lesbar ist, und os.access(file_path, os.W_OK) prüft, ob sie beschreibbar ist. os.chmod(file_path, stat.S_IREAD) setzt die Datei auf schreibgeschützt. Das stat-Modul stellt Konstanten wie S_IREAD, S_IWRITE und S_IEXEC bereit, um dies klarer zu machen. Sie können Flags mit | (Bitweises OR) kombinieren, wie stat.S_IREAD | stat.S_IEXEC, um eine Datei sowohl lesbar als auch ausführbar zu machen.
Die Verwaltung von Berechtigungen ist besonders praktisch, wenn man mit Dateien arbeitet, die aus externen Quellen stammen, oder wenn man eine detaillierte Kontrolle darüber benötigt, wer was mit den eigenen Dateien tun kann.
Arbeiten mit Umgebungsvariablen
Stellen Sie sich vor, Sie arbeiten an einem Projekt, das einen API-Schlüssel benötigt, um sich mit einem Dienst zu verbinden. Den Schlüssel fest im Code zu hinterlegen ist nicht sicher. Stattdessen sollten Sie ihn in einer Umgebungsvariablen speichern und abrufen, wenn Ihr Programm ausgeführt wird. Hier ist ein Beispiel, um es klarer zu machen.
import os
# Get an environment variable
api_key = os.getenv("API_KEY")
if api_key:
print("API key found:", api_key[:4] + "****") # Masking for safety
else:
print("API key not found. Please set it.")
# Set an environment variable (for current session only)
os.environ["MODE"] = "development"
print("Running in mode:", os.environ["MODE"])
os.getenv("API_KEY") ruft den Wert der Umgebungsvariable mit dem Namen API_KEY ab. Wenn sie nicht existiert, wird None (oder der von Ihnen angegebene Standardwert) zurückgegeben. os.environ["MODE"]="development" legt eine Umgebungsvariable für die Lebensdauer Ihres Programms fest. Sie bleibt nach Beendigung des Programms nicht erhalten, ist aber während der Programmausführung nützlich zur Konfiguration. Die Verwendung von Umgebungsvariablen hilft dabei, sensible Daten aus Ihrem Quellcode fernzuhalten und ermöglicht es Ihnen, problemlos zwischen verschiedenen Konfigurationen zu wechseln.
Systembefehle ausführen
Manchmal kann Python nicht alles direkt erledigen. Andernfalls ist es manchmal einfach bequemer, das Betriebssystem eine Aufgabe übernehmen zu lassen. Zum Beispiel möchten Sie vielleicht das heutige Datum und die aktuelle Uhrzeit abfragen, den Bildschirm löschen oder ein auf Ihrem Rechner installiertes Hilfsprogramm ausführen. Das os-Modul bietet eine schnelle Möglichkeit, dies mit os.system(command) zu tun. Hier ist ein solches Beispiel:
import os
# Show the current date (works differently depending on OS)
os.system("date")
# Clear the terminal screen
# "cls" is for Windows, "clear" is for Linux/macOS
os.system("cls" if os.name == "nt" else "clear")
Nun zu einer praktischeren Aufgabe. Angenommen, Sie möchten alte temporäre Dateien aus einem bestimmten Ordner bereinigen. Obwohl Sie dies mit reinem Python tun könnten, kann das Aufrufen eines Systembefehls wie rm (Linux/macOS) oder del (Windows) schnell sein:
import os
# Remove all .tmp files in the "temp" folder
if os.name == "nt": # Windows
os.system("del temp\\*.tmp")
else: # Linux / macOS
os.system("rm temp/*.tmp")
Die Verwendung von os.system() in Python wird im Allgemeinen für die meisten Anwendungsfälle nicht empfohlen, insbesondere beim Umgang mit Benutzereingaben oder in Produktionsumgebungen. Zwar kann es Systembefehle ausführen, jedoch gibt es im Vergleich zum subprocess-Modul mehrere Sicherheits- und Funktionsbeschränkungen.
Systeminformationen abrufen
Manchmal möchte man einfach ein bisschen mehr über die Umgebung wissen, in der der Python-Code ausgeführt wird. Vielleicht interessiert es Sie, welcher Benutzer den Prozess gestartet hat, oder Sie möchten die Prozess-ID (PID) abrufen, um die Überwachung zu unterstützen. Das os-Modul verfügt über Funktionen, um alle möglichen nützlichen Systeminformationen abzurufen.
import os
print("Operating system:", os.name)
print("Current process ID:", os.getpid())
print("Parent process ID:", os.getppid())
print("Logged in as:", os.getlogin())
print("Number of CPUs:", os.cpu_count())
# Extra details (Unix only)
if hasattr(os, "uname"):
print("System info:", os.uname())
Mit nur wenigen Aufrufen können Sie Ihr Programm intelligenter in Bezug auf die Umgebung machen, in der es ausgeführt wird, sei es für Protokollierung, Debugging oder zur Anpassung des Verhaltens, abhängig vom System.
Durchlaufen eines Verzeichnisbaums
Angenommen, Sie möchten einen Projektordner durchsuchen und alle .log-Dateien finden. Anstatt eigenen rekursiven Code zu schreiben, um jedes Unterverzeichnis zu überprüfen, bietet Ihnen Pythons os-Modul os.walk(), das die schwere Arbeit übernimmt.
os.walk(path) erzeugt eine Folge von Tupeln (dirpath, dirnames, filenames) für jeden Ordner, den es besucht. Für die meisten dateibezogenen Aufgaben konzentriert man sich normalerweise auf die filenames.
import os
search_dir = "project"
target_ext = ".logs"
for dirpath, dirnames, filenames in os.walk(search_dir):
for file in filenames:
if file.endswith(target_ext):
full_path = os.path.join(dirpath, file)
print("Found:", full_path)
Dies ist eine der praktischsten Funktionen des os-Moduls. Egal, ob Sie Protokolldateien suchen, nach Bildern scannen oder Datendateien über verschachtelte Ordner sammeln, os.walk erspart Ihnen, das Rad neu zu erfinden.
Python bietet so viele nützliche Bibliotheken und Module, die Ihnen helfen, Aufgaben des täglichen Lebens einfacher zu erledigen. Es gibt Module, um einen Grafikrechner zu erstellen oder sogar für die Datenverarbeitung.






