2017-02-05 3 views
0

J'essaie d'obtenir tous les répertoires dans un chemin. Par exemple, de a/b/c/d.e je voudrais obtenir a, a/b, et a/b/c. Je peux y parvenir en appelant des fonctions comme posix dirname plusieurs fois. Le problème est avec des chemins comme a/b/c/. Je voudrais obtenir a, a/b, et a/b/c. Puisqu'il y a un / suivant c, c devrait être un répertoire que je voudrais lister. Mais des fonctions comme dirname renvoient a/b au lieu de a/b/c lorsqu'elles sont données a/b/c/ en entrée. Puis-je simplement diviser / pour obtenir la liste des répertoires ou y a-t-il un cas limite où cela ne fonctionnerait pas?Est-il prudent de diviser un chemin sur '/' pour l'analyser?

Répondre

1

Les seuls cas particuliers que je connais sont

  1. avec le nom de fichier à la fin
  2. avec un / à la fin
  3. avec un nom de dossier appelé a.e (peut ou peut-être pas à la fin)
  4. lien symbolique
  5. chemin Windows (qui utilise \ mais je pense qu'il n'applique pas dans votre cas)
  6. Erreur de saisie de l'utilisateur, mettre plusieurs /. par exemple. /tmp//something qui est pris en charge dans certains programmes

Si votre fonction prend en charge tous les cas ci-dessus, je pense que c'est bien.