Quelque chose comme
def longest_path(paths):
key = lambda path:path.count('/')
return max(paths, key=key)
Vous devez utiliser os.path.normpath
sur les chemins avant de compter.
je suppose que sur Windows cela pourrait être un peu délicat, car le séparateur de chemin peut être \ ou/... la figure ci-dessous le code permet os.path.split
it out:
import os.path
def nesting(path):
""" counts how often `os.path.split` works on `path` """
c = 0
head = tail = path
while head and tail:
head, tail = os.path.split(head)
c +=1
return c
def longest_path(paths):
return max(paths, key=nesting)
Puisque vous êtes à la recherche de la chemin le plus profond, il doit s'agir d'un dossier qui n'a pas de sous-dossiers! Vous pouvez l'obtenir comme ceci:
def find_leafes(root):
""" finds folders with no subfolders """
for root, dirs, files in os.walk(root):
if not dirs: # can't go deeper
yield root
print longest_path(find_leafes(root))
ou même plus rapide: clé = lambda chemin: chemin.count ('/') – Will
@Will: merci! –
alors devrais-je utiliser os.walk et ajouter à une liste avant de passer à votre fonction longest_path? –