Ich habe eine Funktion, die der folgenden ähnelt. Ich bin mir nicht sicher, wie ich das Modul os verwenden kann, um nach Abschluss der Ausführung des Jars zu meinem ursprünglichen Arbeitsverzeichnis zurückzukehren.
%Vor%Hinweis: Ich denke, meine Code-Formatierung ist deaktiviert - nicht sicher warum. Ich entschuldige mich im Voraus
Ein Kontextmanager ist ein sehr geeignetes Werkzeug für diesen Job:
%Vor%... verwendet als:
%Vor%... was etwas ergeben wird wie:
%Vor% Dies ist tatsächlich besser für die eingebaute cd -
-Shell, da es auch dafür sorgt, dass Verzeichnisse zurückversetzt werden, wenn ein Block aufgrund einer ausgelösten Ausnahme beendet wird.
Für Ihren speziellen Anwendungsfall wäre dies stattdessen:
%Vor% Eine weitere zu berücksichtigende Option ist die Verwendung von subprocess.call()
anstelle von os.system()
, wodurch Sie ein Arbeitsverzeichnis angeben können, in dem der Befehl ausgeführt werden soll:
... das würde verhindern, dass Sie das Verzeichnis des Interpreters überhaupt ändern müssen.
Der Hinweis, os.chdir(owd)
zu verwenden, ist gut. Es wäre ratsam, den Code, der das geänderte Verzeichnis benötigt, in einen try:finally
-Block (oder in Python 2.6 und höher, einen with:
-Block) zu setzen. Das verringert das Risiko, dass Sie versehentlich return
in den Code einfügen vor dem Wechsel zurück in das ursprüngliche Verzeichnis.
os.chdir (owd) sollte den Trick machen (wie Sie es bei der Umstellung auf testDir getan haben)
Tags und Links python