Obtener rutas absolutas de todos los archivos en un directorio

¿Cómo obtengo las rutas absolutas de todos los archivos en un directorio que podría tener muchas subcarpetas en Python?

Sé que os.walk() recursivamente me da una lista de directorios y archivos, pero eso no parece os.walk() lo que quiero.

os.path.abspath se asegura de que una ruta sea absoluta. Utilice la siguiente función de ayuda:

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

Si el argumento dado a os.walk es absoluto, entonces los nombres de directorio raíz producidos durante la iteración también serán absolutos. Entonces, solo necesitas unirte a ellos con los nombres de archivo:

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

Tratar:

 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 

Si tiene Python 3.4 o más reciente, puede usar pathlib (o un backport de terceros si tiene una versión anterior de Python):

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

Puede usar os.path.abspath() para convertir las rutas relativas en rutas absolutas:

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

Quería mantener los detalles del subdirectorio y no los archivos y solo quería subdirectorios con un archivo xml en ellos. Puedo hacerlo de esta manera:

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