webentwicklung-frage-antwort-db.com.de

Liefert absolute Pfade aller Dateien in einem Verzeichnis

Wie erhalte ich die absoluten Pfade aller Dateien in einem Verzeichnis, das in Python viele Unterordner haben könnte?

Ich weiß, os.walk() gibt mir rekursiv eine Liste von Verzeichnissen und Dateien, aber das scheint mir nicht zu gefallen, was ich will. 

38
madCode

os.path.abspath stellt sicher, dass ein Pfad absolut ist. Verwenden Sie die folgende Hilfsfunktion:

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))
47
phihag
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)
10
wim

Versuchen:

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
9
the wolf

Sie können os.path.abspath() verwenden, um relative Pfade in absolute Pfade umzuwandeln:

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)))
5
Blender

Wenn Sie Python 3.4 oder neuer verwenden, können Sie pathlib (oder einen Backport eines Drittanbieters verwenden, wenn Sie eine ältere Python-Version haben):

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


def absolute_file_paths(directory):
    return glob(join(directory, "**"))
0
AmjadHD
for root, directories, filenames in os.walk(directory):
 for directory in directories:
         print os.path.join(root, directory)
 for filename in filenames:
     if filename.endswith(".JPG"):
        print filename
        print os.path.join(root,filename)
0
Robert A

Ich wollte die Unterverzeichnisdetails und nicht die Dateien behalten und wollte nur Unterverzeichnisse mit einer XML-Datei darin. Ich kann es so machen:

for rootDirectory, subDirectories, files in os.walk(eventDirectory):
  for subDirectory in subDirectories:
    absSubDir = os.path.join(rootDirectory, subDirectory)
    if len(glob.glob(os.path.join(absSubDir, "*.xml"))) == 1:
      print "Parsing information in " + absSubDir
0
Eamonn Kenny