Wie erhalte ich den übergeordneten Verzeichnispfad?
dieser code ist den templates/blog1/page.html in b ist.py:
path = os.path.join(os.path.dirname(__file__), os.path.join('templates', 'blog1/page.html'))
aber ich möchte den parent-dir Lage:
aParent
|--a
| |---b.py
| |---templates
| |--------blog1
| |-------page.html
|--templates
|--------blog1
|-------page.html
sind und wie man die aParent Lage
Dank
aktualisiert:
dies ist Recht:
dirname=os.path.dirname
path = os.path.join(dirname(dirname(__file__)), os.path.join('templates', 'blog1/page.html'))
oder
path = os.path.abspath(os.path.join(os.path.dirname(__file__),".."))
InformationsquelleAutor der Frage zjm1126 | 2010-05-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie anwenden dirname mehrfach, um höher zu klettern:
dirname(dirname(file))
. Dies kann nur so weit gehen, wie das root-Paket, jedoch. Wenn dies ein problem ist, verwenden Sieos.path.abspath
:dirname(dirname(abspath(file)))
.InformationsquelleAutor der Antwort Marcelo Cantos
os.path.abspath
nicht bestätigen, alles, also, wenn wir schon anfügen von strings zu__file__
es gibt keine Notwendigkeit, die Mühe mitdirname
oder Beitritt oder nicht. Nur behandeln__file__
als Verzeichnis und beginnen mit dem klettern:Das ist weitaus weniger verwirrend als
os.path.abspath(os.path.join(os.path.dirname(__file__),".."))
und in etwa so überschaubar wiedirname(dirname(__file__))
. Klettern mehr als zwei Ebenen beginnt zu erhalten, lächerlich.Aber, da wir wissen, wie viele Stufen zu erklimmen, wir reinigen könnte dies auch eine einfache kleine Funktion:
InformationsquelleAutor der Antwort joemaller
Können Sie die
pathlib
- Modul in Python 3.4+:Können Sie mehrere Anrufe auf
parent
weiter zu gehen in den Pfad:Als alternative zum angeben
parent
zweimal, die Sie verwenden können,InformationsquelleAutor der Antwort Gavriel Cohen
Sollten geben Sie den Pfad zu
a
.Aber wenn
b.py
ist die Datei, die derzeit ausgeführt werden, dann können Sie das gleiche zu erreichen, indem Sie nur das tut,InformationsquelleAutor der Antwort Felix Kling
os.pardir
einen besseren Weg für../
mehr lesbar.Wird das Ergebnis der übergeordneten Pfad der given_path
InformationsquelleAutor der Antwort Sun Liwen
Können sich zwei
..
Ordner, um Eltern von den übergeordneten Ordner?InformationsquelleAutor der Antwort YOU
Einfache Art können sein:
InformationsquelleAutor der Antwort Muneeb Ali
Verwenden Sie die folgenden zu springen, zum vorherigen Ordner:
Wenn Sie mehrere Sprünge eine gute und einfache Lösung ist die Verwendung von einem einfachen Dekorateur in diesem Fall.
InformationsquelleAutor der Antwort Marco smdm
Ich denke, das ist besser:
InformationsquelleAutor der Antwort dongweiming
Hier ist eine relativ einfache Lösung:
dirname()
(was funktioniert nicht wie erwartet, auf einer Ebene Argumente wie "file.txt" oder relative Eltern, wie "..")abspath()
(ohne irgendwelche Annahmen über das aktuelle Arbeitsverzeichnis, sondern bewahrt den relativen Charakter der Pfadees verwendet einfach
normpath
undjoin
:Ergebnis:
InformationsquelleAutor der Antwort Stefaan
Habe ich versucht:
InformationsquelleAutor der Antwort spicyramen