Non vedo ancora una risposta valida per 2.7 che non richiede l'installazione di dipendenze aggiuntive e che parte anche dalla directory del file. Non è piacevole come soluzione a riga singola, ma non c'è niente di sbagliato nell'usare le utilità standard.
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
E per dimostrare che funziona, qui comincio ~/Documents/notes
solo per mostrare che la directory corrente non influenza il risultato. Ho messo il file grandpa.py
con quello script in una cartella chiamata "scripts". Scansione fino alla directory Documents e quindi alla directory utente su un 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
Questa è l'ovvia estrapolazione della risposta per la dir genitore . Meglio usare una soluzione generale piuttosto che una soluzione meno buona in meno righe.
pathlib
soluzione è un po 'più carina e più leggibile, ma non è inclusa in Python 2.7. Direi che mantieni quello che hai, magari aggiungi un commento.