In diesem Artikel befassen wir uns mit dem Abrufen und Ändern des Arbeitsverzeichnisses in Python. Während der Arbeit mit Dateiverwaltung Möglicherweise ist Ihnen aufgefallen, dass auf Dateien nur mit ihrem Namen verwiesen wird, z. B. „GFG.txt“ und wenn sich die Datei nicht im Verzeichnis des Skripts befindet, gibt Python einen Fehler aus. Das Konzept der Aktuelles Arbeitsverzeichnis (CWD) wird hier wichtig. Betrachten Sie CWD als den Ordner, in dem Python ausgeführt wird. Immer wenn die Dateien nur mit ihrem Namen aufgerufen werden, geht Python davon aus, dass sie im CWD beginnen, was bedeutet, dass eine reine Namensreferenz nur dann erfolgreich ist, wenn sich die Datei im CWD von Python befindet.
Notiz: Der Ordner, in dem das Python-Skript ausgeführt wird, wird als aktuelles Verzeichnis bezeichnet. Dies ist möglicherweise nicht der Pfad, in dem sich das Python-Skript befindet.
Was ist das Python-Betriebssystemmodul?
Python bietet ein OS-Modul für die Interaktion mit dem Betriebssystem. Dieses Modul gehört zum Standard-Dienstprogrammmodul von Python. Alle Funktionen im OS-Modul werden aktiviert OSError im Falle ungültiger oder unzugänglicher Dateinamen und Pfade oder anderer Argumente, die den richtigen Typ haben, aber vom Betriebssystem nicht akzeptiert werden.
Python Aktuelles Verzeichnis finden
Rufen Sie mit sys.argv[0] ein Verzeichnis des aktuellen Python-Skripts ab.
In diesem Beispiel haben wir verwendet sys.argv[0] um den Pfad der Skriptdatei abzurufen und os.path.dirname() extrahiert das aktuelle Verzeichnis aus dem Pfad.
Python3
import> os> import> sys> script_directory>=> os.path.dirname(os.path.abspath(sys.argv[>0>]))> print>(script_directory)> |
>
>
Ausgabe :

Rufen Sie ein Verzeichnis des aktuellen Python-Skripts ab
Rufen Sie das Verzeichnis des aktuellen Python-Skripts mit dem Inspect-Modul ab
In diesem Beispiel haben wir verwendet inspect.getfile(inspect.currentframe()) was den Pfad der aktuellen Skriptdatei zurückgibt, und os.path.dirname() extrahiert das aktuelle Verzeichnis aus dem Pfad.
Python3
import> inspect> import> os> script_directory>=> os.path.dirname(os.path.abspath(> >inspect.getfile(inspect.currentframe())))> > print>(script_directory)> |
>
>
Ausgabe :
Blasensortier-Python

Verzeichnis des aktuellen Python-Skripts abrufen
Holen Sie sich das aktuelle Arbeitsverzeichnis mit os.getcwd()
In diesem Beispiel haben wir verwendet os.getcwd() um das aktuelle Verzeichnis des Python-Skripts abzurufen.
Python3
import> os> > print>(>'File location using os.getcwd():'>, os.getcwd())> |
>
>
Ausgabe :
File location using os.getcwd(): /home/tuhingfg/Documents/Scripts>
Notiz: Benutzen os.getcwd() funktioniert nicht wie erwartet, wenn der Python-Code aus einem anderen Verzeichnis als dem Python-Skript ausgeführt wird.
Unerwartetes Ergebnis beim Ausführen eines Python-Skripts aus einem anderen Verzeichnis als dem Skript mit os.getcwd()
Das Python-Skript wird darin platziert /home/tuhingfg/Documents/Scripts . Wenn wir das Skript aus demselben Ordner ausführen, wird der korrekte Speicherort des Skripts angezeigt. Wenn wir jedoch unser Verzeichnis an einen anderen Ort ändern, wird der Speicherort dieses Verzeichnisses ausgegeben. Das ist weil os.getcwd() berücksichtigt das Verzeichnis, von dem aus wir das Skript ausführen. Darauf aufbauend das Ergebnis von os.getcwd() variiert auch.
Python3
import> os> > print>(>'File location using os.getcwd():'>, os.getcwd())> |
>
>
Ausgabe:

Skriptspeicherort mit os.getcwd() abrufen
Rufen Sie den Speicherort des Python-Skripts mit der Methode os.path.realpath() ab
Mit os.path.realpath() kann der Pfad des aktuellen Python-Skripts ermittelt werden. Tatsächlich wird die Methode os.path.realpath() in Python verwendet, um den kanonischen Pfad des angegebenen Dateinamens zu ermitteln, indem alle im Pfad gefundenen symbolischen Links entfernt werden. Eine besondere Variable __Datei__ wird an die übergeben realpath() Methode, um den Pfad des Python-Skripts abzurufen.
In diesem Beispiel ist die os.getcwd() Und __Datei__ liefern zwei unterschiedliche Ergebnisse. Da wir das Skript aus einem anderen Ordner als dem Skript ausführen, os.getcwd() Die Ausgabe hat sich je nach Ausführungsordner des Skripts geändert. Aber __Datei__ generiert das konstante Ergebnis unabhängig vom aktuellen Arbeitsverzeichnis.
Python3
import> os> > print>(>'File location using os.getcwd():'>,> >os.getcwd())> > print>(f>'File location using __file__ variable:'>+> >'{os.path.realpath(os.path.dirname(__file__))}'>)> |
>
>
Ausgabe:
Java-Punkt

Holen Sie sich ein Verzeichnis mit Python
Hinweis: __file__ ist der Pfadname der Datei, aus der das Modul geladen wurde, wenn es aus einer Datei geladen wurde.