Überprüfen Sie, ob ein Verzeichnis ein (Dateisystem) root

Ich habe ein Skript, dass Suchvorgänge für ein Verzeichnis mit einer bestimmten Datei, ausgehend vom aktuellen Verzeichnis und geht auf den Baum (denken, versuchen herauszufinden, wo die .git Verzeichnis sitzt).

Meine Methode sieht wie folgt aus:

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

Nun das problem mit dieser Methode ist, dass, wenn das Verzeichnis nicht gefunden wird, ist es eine Schleife (und schließlich stack-overflows), weil offenbar der Beitritt / und .. gibt Sie / wieder. Ich habe versucht, den Vergleich path mit parent oder Ihre reprs, aber das hat nicht funktioniert (waren Sie immer deutlich). Mein workaround für jetzt ist eine Tiefe counter in der rekursiven Methode und stoppen Sie an einigen zufälligen maximale Schwelle.

Meine Frage ist also, gibt es eine zuverlässige cross-Plattform-Weg, um zu überprüfen, ob erreicht habe ich eine Wurzel im Dateisystem?

  • Ich bin mir nicht ganz sicher, ob es zuverlässig ist und auf allen Plattformen, aber wenn Sie os.Pfad.dirname(Pfad)==Pfad, dann scheint es wie Weg ist die Wurzel.
InformationsquelleAutor Philippe | 2012-03-22
Schreibe einen Kommentar