Nie widzę jeszcze realnej odpowiedzi na 2.7, która nie wymaga instalowania dodatkowych zależności, a także zaczyna się od katalogu pliku. Nie jest to przyjemne rozwiązanie jednokreskowe, ale nie ma nic złego w korzystaniu ze standardowych narzędzi.
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
Aby udowodnić, że to działa, zacznę tutaj, ~/Documents/notes
aby pokazać, że bieżący katalog nie wpływa na wynik. Umieściłem plik grandpa.py
z tym skryptem w folderze o nazwie „scripts”. Przeszukuje do katalogu Dokumenty, a następnie do katalogu użytkownika na komputerze 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
To oczywista ekstrapolacja odpowiedzi dla rodzica reż . Lepiej jest użyć rozwiązania ogólnego niż mniej dobrego w mniejszej liczbie wierszy.
pathlib
Rozwiązanie jest trochę ładniejszy i bardziej czytelne, ale nie jest wliczone w Pythonie 2.7. Powiedziałbym, że trzymaj się tego, co masz, może dodaj komentarz.