Ek bağımlılıklar yüklemeyi gerektirmeyen ve ayrıca dosyanın dizininden başlayan 2.7 için henüz geçerli bir cevap göremiyorum. Tek satırlık bir çözüm olarak hoş değil, ancak standart yardımcı programları kullanmanın yanlış bir yanı yok.
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
Ve işe yaradığını kanıtlamak için, burada başlıyorum, ~/Documents/notes
böylece mevcut dizinin sonucu etkilemeyeceğini gösteriyorum. grandpa.py
Bu komut dosyasını içeren dosyayı "komut dosyaları" adlı bir klasöre koydum . Bir Mac'te Belgeler dizinine ve ardından kullanıcı dizinine kadar tarar.
(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
Bu, ana dizin için yanıtın açık bir ekstrapolasyonudur . Daha az satırda daha az iyi bir çözüm yerine genel bir çözüm kullanmak daha iyidir.
pathlib
çözüm biraz daha güzel ve daha okunabilir, ancak Python 2.7 ile dahil değildir. Elinizdekilere sadık kalın derim, belki bir yorum ekleyin.