Wie man das Arbeitsverzeichnis in Python ändert

Rayven Esplanada 18 Juli 2021
Wie man das Arbeitsverzeichnis in Python ändert

Dieser Artikel bespricht, wie Sie das aktuelle Arbeitsverzeichnis von Python in ein anderes Verzeichnis ändern können.

Verwendung von das os-Modul zum Ändern des Verzeichnisses in Python

Angenommen, Sie möchten aus irgendeinem Grund Ihr Arbeitsverzeichnis über Python statt über die Befehlskonsole ändern. In diesem Fall stellt das Modul os Werkzeuge für verschiedene Betriebssystemprogramme direkt über Python zur Verfügung.

import os

Nehmen wir an, Sie befinden sich gerade in einem Arbeitsverzeichnis unter /Users/user und möchten zu Users/user2 wechseln: Überprüfen Sie zunächst das aktuelle Arbeitsverzeichnis, in dem Sie sich befinden, indem Sie das Ergebnis von os.getcwd() ausdrucken. Als nächstes rufen Sie den os.chdir("Users/user2") Block auf, um das aktuelle Arbeitsverzeichnis zu wechseln.

print(os.getcwd())
os.chdir("/Users/user2")
print(os.getcwd())

Ausgabe:

/Users/user
/Users/user2

Damit wird überprüft, ob Ihr Programm erfolgreich das Arbeitsverzeichnis von user auf user2 umgeschaltet hat.

Prüfung auf Ausnahmen

Der Pfad wird vom Benutzer eingegeben, so dass Eingabefehler sehr wahrscheinlich sind. Zum Beispiel gibt der Benutzer einen nicht existierenden Pfad ein; diese Funktion wird wahrscheinlich sehr anfällig für FileNotFound-Ausnahmen sein. Angesichts dessen sollten wir eine Ausnahmeprüfung implementieren.

Verwendung von if-else zur Fehlerprüfung

Der einfache Weg, dies zu tun, besteht darin, mit if-else zu prüfen, ob der angegebene Pfad existiert:

import os


def changeDir(newPath):
    if os.path.exists(newPath):
        os.chdir("Directory moved: ", newPath)
        print(os.getcwd())
    else:
        print("Directory ", newPath, " not found.")


print("Base directory: ", os.getcwd())
changeDir("/Users/user2")
changeDir("/Users/nonexistentpath")

Nehmen wir an, dass /Users/user2 ein existierender Dateipfad ist und /Users/nonexistentpath nicht existiert.

Ausgabe:

Base directory:  /Users/user
Directory moved:  /Users/user2
Directory  Users/nonexistentpath  not found.

Der erste Aufruf des changeDir()-Blocks ging durch die if-Anweisung, weil der Pfad existiert. Auf der anderen Seite geht der zweite Aufruf durch das else und gibt eine fehlerähnliche Meldung aus, weil der Pfad nicht existiert.

Verwendung von try...except zur Fehlerprüfung

Wenn der Befehl os.chdir() den Dateipfad nicht findet, gibt er eine FileNotFoundError-Benachrichtigung aus. Um dies abzufangen, müssen wir den Code um einen Block try...except wickeln.

import os


def changeDir(newPath):
    try:
        os.chdir(newPath)
        print("Directory moved:  newPath")
    except OSError:
        print("Directory ", newPath, "does not exist.")


print("Base directory: ", os.getcwd())
changeDir("/Users/user2")
changeDir("/Users/nonexistentpath")

Ausgabe:

Base directory:  /Users/user
Directory moved:  /Users/user2
Directory  Users/nonexistentpath  does not exist.

Mehr oder weniger, beide erzeugen die gleiche Ausgabe; allerdings ist die Verwendung der try...except Ausnahmebehandlung viel sicherer als die Verwendung einer if-else Anweisung. Das liegt daran, dass benutzerdefinierte Bedingungen möglicherweise nicht alle möglichen Ausnahmen abdecken, die bei der Behandlung von Dateipfadmanipulationen auftreten können.

Zusammenfassend kann man sagen, daß das os-Modul neben anderen Hilfsprogrammen, die es bietet, umfangreiche Unterstützung für die Manipulation von Dateien und Verzeichnissen bietet.

Wir können das Arbeitsverzeichnis direkt mit dem os.chdir()-Block ändern, aber es wäre sicherer, ihn entweder um if-else- oder try...except-Blöcke zu wickeln, um zu vermeiden, dass Ausnahmen auftreten.

Wenn Sie mehr über Datei-Manipulation erfahren wollen, sind die Behandlung von Ausnahmen und die Aktualisierung von Dateinamen oder -inhalten unglaublich wichtig.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Verwandter Artikel - Python Directory