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.
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))
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)
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
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)))
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())
from glob import glob
def absolute_file_paths(directory):
return glob(join(directory, "**"))
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)
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