493 Stimmen

Wie erhalte ich den Pfad des Python-Skripts, in dem ich arbeite?

Duplikat:
Wie erhalte ich in Python den Pfad und den Namen der Datei, die gerade ausgeführt wird?

Wie erhalte ich den Pfad des Python-Skripts, in dem ich gerade arbeite? Ich habe dirname(sys.argv[0]) Auf dem Mac erhalte ich jedoch nur den Dateinamen und nicht den vollständigen Pfad wie unter Windows.

Unabhängig davon, von wo aus meine Anwendung gestartet wird, möchte ich Dateien öffnen, die relativ zu meinen Skriptdateien sind.

617voto

jblocksom Punkte 13199

Verwenden Sie diese Option, um den Pfad der aktuellen Datei zu ermitteln. Es werden alle Symlinks im Pfad aufgelöst.

import os

file_path = os.path.realpath(__file__)

Auf meinem Mac funktioniert das problemlos. Es wird nicht von der Python-Interpreter arbeiten (Sie müssen eine Python-Datei ausführen).

161voto

Jason Coon Punkte 16347
import os
print os.path.abspath(__file__)

147voto

Jon W Punkte 14908

7.2 von Dive Into Python: Den Weg finden .

import sys, os

print('sys.argv[0] =', sys.argv[0])             
pathname = os.path.dirname(sys.argv[0])        
print('path =', pathname)
print('full path =', os.path.abspath(pathname))

54voto

Dan Punkte 535

Die akzeptierte Lösung wird nicht funktionieren, wenn Sie vorhaben, Ihre Skripte mit py2exe zu kompilieren. Wenn Sie das vorhaben, ist dies die funktionale Entsprechung:

os.path.dirname(sys.argv[0])

Py2exe bietet keine __file__ variabel. Als Referenz: http://www.py2exe.org/index.cgi/Py2exeEnvironment

-7voto

Chris Lutz Punkte 69879

Wenn Sie sogar den relativen Pfadnamen haben (in diesem Fall scheint es zu sein ./ ) können Sie Dateien in Bezug auf Ihre Skriptdatei(en) öffnen. Ich verwende Perl, aber die gleiche allgemeine Lösung kann angewendet werden: Ich teile das Verzeichnis in eine Reihe von Ordnern auf, dann pop das letzte Element (das Skript) aus, dann push (oder für Sie, append ) auf die gewünschte Datei und füge sie dann wieder zusammen, und schon habe ich einen funktionierenden Pfadnamen, der genau dorthin zeigt, wo ich ihn haben will, relativ oder absolut.

Natürlich gibt es, wie bereits erwähnt, bessere Lösungen. Ich mag meine einfach irgendwie.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X