मेरे पास एक ऐसी स्क्रिप्ट है जो वर्तमान निर्देशिका से शुरू होने और पेड़ पर जाने के लिए एक विशिष्ट फ़ाइल वाली निर्देशिका की खोज करती है (यह जानने का प्रयास करने के बारे में सोचें कि .git
निर्देशिका साइट्स कहां है)।जांचें कि कोई निर्देशिका (फ़ाइल सिस्टम) रूट है
मेरे विधि इस प्रकार है:
def getDir(self,cwd):
path = os.path.abspath(cwd)
if not os.path.isdir(path):
raise RuntimeError("getDir should not be run on files")
if FILE in os.listdir(path):
return path
parent = os.path.join(path, os.path.pardir)
if os.access(parent, os.R_OK) and os.access(parent, os.X_OK):
return self.getDir(parent)
else
return None
अब इस विधि के साथ समस्या यह है कि, अगर यह निर्देशिका नहीं मिल रहा है, यह लूप (और अंत में स्टैक-अतिप्रवाह) क्योंकि जाहिरा तौर पर /
में शामिल होने और ..
आप देता है /
फिर से। मैंने की तुलना parent
या उनके repr
एस के साथ करने की कोशिश की, लेकिन यह काम नहीं किया (वे हमेशा अलग थे)। इसके लिए मेरा कामकाज रिकर्सिव विधि में गहराई का काउंटर शामिल करना और कुछ यादृच्छिक अधिकतम सीमा पर रोकना है।
मेरा प्रश्न इस प्रकार है, क्या यह जांचने के लिए एक विश्वसनीय क्रॉस-प्लेटफ़ॉर्म तरीका है कि मैं फ़ाइल सिस्टम में रूट पर पहुंच गया हूं या नहीं?
मुझे पूरी तरह से यकीन नहीं है कि यह सभी प्लेटफ़ॉर्म पर विश्वसनीय है, लेकिन यदि os.path.dirname (पथ) == पथ है, तो ऐसा लगता है जैसे पथ रूट है। –