我有一個腳本,用於搜索包含特定文件的目錄,從當前目錄開始並向上搜索(想想如何找出.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
現在用這種方法的問題在於,如果它不能找到目錄,它循環(並最終堆棧溢出),因爲顯然加入/
和..
給你/
。我試過將path
與parent
或repr
進行比較,但那不起作用(它們總是不同的)。我現在的解決方法是在遞歸方法中包含一個深度計數器,並在某個隨機最大閾值處停止。
我的問題是,是否有可靠的跨平臺方法來檢查我是否已經到達文件系統的根目錄?
我不完全確定它是否在所有平臺上都可靠,但是如果os.path.dirname(path)==路徑,那麼它看起來像路徑是根。 – 2012-03-22 13:25:40