Ich sehe noch keine brauchbare Antwort für 2.7, für die keine zusätzlichen Abhängigkeiten installiert werden müssen und die auch im Verzeichnis der Datei beginnt. Als einzeilige Lösung ist es nicht schön, aber es ist nichts Falsches daran, die Standarddienstprogramme zu verwenden.
import os
grandparent_dir = os.path.abspath(
os.path.join(
os.path.join(
os.path.dirname(
os.path.abspath(__file__)
),
os.pardir
),
os.pardir
)
)
print grandparent_dir
Und um zu beweisen, dass es funktioniert, beginne ich hier ~/Documents/notes
nur damit, dass das aktuelle Verzeichnis keinen Einfluss auf das Ergebnis hat. Ich habe die Datei grandpa.py
mit diesem Skript in einem Ordner namens "scripts" abgelegt . Es kriecht zum Dokumentverzeichnis und dann zum Benutzerverzeichnis auf einem Mac.
(testing)AlanSE-OSX:notes AlanSE$ echo ~/Documents/scripts/grandpa.py
/Users/alancoding/Documents/scripts/grandpa.py
(testing)AlanSE-OSX:notes AlanSE$ python2.7 ~/Documents/scripts/grandpa.py
/Users/alancoding
Dies ist die offensichtliche Extrapolation der Antwort für das übergeordnete Verzeichnis . Verwenden Sie lieber eine allgemeine Lösung als eine weniger gute Lösung in weniger Zeilen.
pathlib
Lösung ist etwas besser und besser lesbar, ist jedoch in Python 2.7 nicht enthalten. Ich würde sagen, bleib bei dem, was du hast, füge vielleicht einen Kommentar hinzu.