C:test [dir] getpath [file] path.py [dir] sub [file] sub_path.py
Zum Beispiel hat das Verzeichnis
C:test auch ein Verzeichnis mit dem Namen sub;
Das Verzeichnis C:test hat getpath.py und das Unterverzeichnis hat sub_path.py, getpath .py ruft sub_path.py auf;
Wir führen getpath.py unter C:test aus. wenn wir es wären
Wenn sys.path[0] in sub_path.py verwendet wird, wird tatsächlich der Verzeichnispfad „C:test“ erhalten, in dem sich getpath.py befindet, da Python virtuell ist
Die Maschine startet die Ausführung von getpath.py. Wenn Sie den Pfad von sub_path.py erhalten möchten, müssen Sie Folgendes tun:
os.path.split(os.path.realpath(__file__))[0]
Überprüfung:
Dann führen wir python getpath/path.py unter C:test aus. Zu diesem Zeitpunkt lauten die Werte, die verschiedenen Verwendungen in sub_path.py entsprechen, tatsächlich:
os.getcwd() „C:test“ , das das Startausführungsverzeichnis annimmt
sys.path[0] oder sys.argv[0] „C:testgetpath“, das das Verzeichnis annimmt, in dem sich das ursprünglich ausgeführte Skript befindet
os.path.split(os .path.realpath(__file__)) [0] „C:testgetpathsub“, nimmt das Verzeichnis, in dem sich die Datei sub_path.py befindet, in der sich __file__ befindet