Arbeitsverzeichniss in der Shell immer gleich wie Ort der Python-Datei, die os.system ausgeführt hat?



  • [Python] schrieb:

    Shade Of Mine schrieb:

    [Python] schrieb:

    Sag das Blue-Tiger

    der sagt genau das selbe wie alle anderen.

    Eben nicht:

    Blue-Tiger schrieb:

    [...]Sprich: die Shell wird das gleiche Arbeitsverzeichnis haben wie das Python-Script.

    Um Missverstaendnisse aufzuklaeren:

    Das Python-Skript hat eine CWD. Gibst du in diesem Skript einen relativen Pfad an (etwa als Parameter fuer "open"), dann wird der relativ zu diesem CWD sein. Startest du von Python aus eine Shell, dann wird diese Shell die CWD vom Python-Skript erben. Startest du irgend einen anderen Befehl, dann wird dieser ebenfalls die CWD vom Python-Skript erben.

    Entscheidend fuer dich ist aber folgende Frage: woher kriegt das Python-Skript seine CWD? Die kriegt es vom Programm, das das Skript startet. In meinem Beispiel, das ich oben gepostet habe, starte ich das Python-Skript von einer Shell raus. Je nachdem, in welchem Verzeichnis diese Shell grad ist ( = wo die CWD der shell ist), wird sich auch die CWD aendern, die das Python-Skript erhaelt. Wenn das bei dir anders ist, dann setzt dein Python-Skript irgendwo das CWD um, oder der Prozess, der das Skript startet, gibt absichtlich das Homeverzeichnis als CWD mit!
    Letzteres kann z. B. passieren, wenn du das Skript per Doppelklick aus 'nem Filemanager raus startet. Manche Filemanager starten Skripts immer mit ~ als CWD. Bei mir (XFCE) kann ich auch bei Verknuepfungen am Desktop oder im Startmenue festlegen, mit welchem CWD die Programme gestartet werden.

    Wie rufst du dein Programm denn genau auf? (wenn aus der Shell, dann bitte gib ein Minimalbeispiel an, aehnlich wie ich vorher) 🙂

    Christophs Einwand solltest du auch noch bedenken! Sys.argv[0] kann unter Umstaenden ganz ueberraschende Sachen enthalten. Solltest du das Skript irgendwie warten wollen oder spaeter mal den Code fuer ein anderes Skript wiederverwenden stehst dann irgendwann vllt. mal vor 'ner kleinen Ueberraschung (im besten fall) oder 'ner grossen Katastrophe ("aufraeumskript" klingt als wuerdest du Dateien loeschen - evtl. loescht irgendwann mal was falsches, weil du in einem ganz anderen Ordner bist, als du glaubst dass du bist!)


Anmelden zum Antworten