2010-05-31 3 views
2

J'ai une liste des fichiers qui ressemblent à ceci:Comment séparer des noms de fichiers de chemins en utilisant python?

Entrée

/foo/bar/baz/d4dc7c496100e8ce0166e84699b4e267fe652faeb070db18c76669d1c6f69f92.mp4 
/foo/baz/bar/60d24a24f19a6b6c1c4734e0f288720c9ce429bc41c2620d32e01e934bfcd344.mp4 
/bar/baz/foo/cd53fe086717a9f6fecb1d0567f6d76e93c48d7790c55e83e83dd1c43251e40e.mp4 

Et je voudrais partager les noms de fichiers du chemin tout en conservant les deux.

Sortie

['/foo/bar/baz/', 'd4dc7c496100e8ce0166e84699b4e267fe652faeb070db18c76669d1c6f69f92.mp4'] 
['/foo/baz/bar/', '60d24a24f19a6b6c1c4734e0f288720c9ce429bc41c2620d32e01e934bfcd344.mp4'] 
['/bar/baz/foo', 'd53fe086717a9f6fecb1d0567f6d76e93c48d7790c55e83e83dd1c43251e40e.mp4'] 

Comment peut-on aller à ce sujet?

Merci!

Répondre

16

os.path.split fait exactement ce dont vous avez besoin, et je cite ...:

os.path.split(path) 

de Split le chemin de chemin dans une paire, (tête, queue) où la queue est le dernier composant de chemin et la tête est tout ce qui mène à cela. La partie queue ne contiendra jamais de barre oblique; si le chemin se termine par une barre oblique, la queue sera vide. S'il n'y a pas de barre oblique dans le chemin, la tête sera vide. Si le chemin est vide, la tête et la queue sont vides. Trailing slash sont supprimés de la tête sauf si c'est la racine (une ou plusieurs barres obliques seulement). Dans presque tous les cas, joint (tête, queue) est égal à chemin (la seule exception étant quand il y avait plusieurs barres obliques séparant la tête de la queue).

Ainsi, étant donné une liste (par exemple le nom paths) des chemins complets,

split_paths = [os.path.split(p) for p in paths] 

devrait être exactement la liste-de-tuples que vous désirez. S'il y a une raison réelle qui vous oblige à demander une liste de listes au lieu de la liste naturelle des tuples, ce n'est pas difficile à faire:

split_paths_as_lists = [list(os.path.split(p)) for p in paths] 
+0

Fonctionne parfaitement. Merci. –

+0

@Rasputin, vous êtes le bienvenu! –

Questions connexes