Подтвердить что ты не робот

Получить абсолютные пути всех файлов в каталоге

Как получить абсолютные пути всех файлов в каталоге, которые могут иметь много подпапок в Python?

Я знаю, что os.walk() рекурсивно дает мне список каталогов и файлов, но это не похоже на то, что я хочу.

4b9b3361

Ответ 1

os.path.abspath гарантирует, что путь является абсолютным. Используйте следующую вспомогательную функцию:

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

Ответ 2

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)

Ответ 3

Try:

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

Ответ 4

Вы можете использовать os.path.abspath(), чтобы превратить относительные пути в абсолютные пути:

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

Если у вас есть Python 3.4 или новее, вы можете использовать pathlib (или сторонний backport, если у вас установлена ​​более старая версия Python ):

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

Ответ 6

Я хотел сохранить данные в подкаталоге, а не файлы, и хотел, чтобы в них были только субдиры с одним XML файлом. Я могу сделать это следующим образом:

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