मुझे अभी तक 2.7 के लिए एक व्यवहार्य उत्तर नहीं दिखाई देता है जिसे अतिरिक्त निर्भरता स्थापित करने की आवश्यकता नहीं है और फ़ाइल की निर्देशिका से भी शुरू होती है। यह सिंगल-लाइन समाधान के रूप में अच्छा नहीं है, लेकिन मानक उपयोगिताओं के उपयोग में कुछ भी गलत नहीं है।
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
और यह साबित करने के लिए कि यहाँ, मैं अभी शुरू करता हूँ ~/Documents/notes
ताकि मैं दिखाऊं कि वर्तमान निर्देशिका परिणाम को प्रभावित नहीं करती है। मैंने grandpa.py
उस स्क्रिप्ट के साथ "स्क्रिप्ट" नामक फ़ोल्डर में फ़ाइल डाल दी । यह दस्तावेज़ों के लिए क्रॉल करता है और फिर मैक पर उपयोगकर्ता के लिए dir होता है।
(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
यह माता-पिता के लिए उत्तर का स्पष्ट निर्गमन है । कम लाइनों में एक अच्छे समाधान की तुलना में सामान्य समाधान का उपयोग करना बेहतर है।
pathlib
समाधान थोड़ा अच्छा और अधिक पठनीय है, लेकिन पायथन 2.7 के साथ शामिल नहीं है। मैं कहता हूं कि आपको जो मिला है, वह शायद एक टिप्पणी है।