97 votes

Obtenir les chemins absolus de tous les fichiers d'un répertoire

Comment obtenir les chemins d'accès absolus de tous les fichiers d'un répertoire pouvant comporter de nombreux sous-dossiers en Python ?

Je sais que os.walk() récursivement me donne une liste de répertoires et de fichiers, mais cela ne semble pas me donner ce que je veux.

104voto

phihag Points 89765

os.path.abspath s'assure que le chemin d'accès est absolu. Utilisez la fonction d'aide suivante :

import os

def absoluteFilePaths(directory):
    for dirpath,_,filenames in os.walk(directory):
        for f in filenames:
            yield os.path.abspath(os.path.join(dirpath, f))

33voto

wim Points 35274

Si l'argument donné à os.walk est absolu, alors les noms de Root dir obtenus au cours de l'itération seront également absolus. Il suffit donc de les joindre aux noms de fichiers :

import os

for root, dirs, files in os.walk(os.path.abspath("../path/to/dir/")):
    for file in files:
        print(os.path.join(root, file))

32voto

MSeifert Points 6307

Si vous avez Python 3.4 ou plus récent, vous pouvez utiliser pathlib (ou un backport tiers si vous avez une version plus ancienne de Python) :

import pathlib
for filepath in pathlib.Path(directory).glob('**/*'):
    print(filepath.absolute())

10voto

the wolf Points 10164

Essayez :

import os

for root, dirs, files in os.walk('.'):
    for file in files:
        p=os.path.join(root,file)
        print p
        print os.path.abspath(p)
        print

9voto

Blender Points 114729

Vous pouvez utiliser os.path.abspath() pour transformer les chemins relatifs en chemins absolus :

file_paths = []

for folder, subs, files in os.walk(rootdir):
  for filename in files:
    file_paths.append(os.path.abspath(os.path.join(folder, filename)))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X