2012-12-08 2 views
0

Я пытаюсь получить все файлы в папке с определенным расширением. Но проблема в том, что я не знаю, сколько подкаталогов может быть там ..получить все пути файлов внутри каталога python

Так что в основном что-то вроде:

    ------ filex.py 
     ---folder1    -------- filezs.py 
root    ------- folder2 
     --- file.py    ----- fileabc.py 
     --- file.txt 

и так далее

Поэтому в основном я хочу, чтобы написать функцию который выполняет следующие действия:

def get_files(root,files_of_type): 
    return dict{key = file_name: value = path} 

Так, например, если я хочу, чтобы получить все файлы и их пути расширения ру

, то это будет так:

root = "/path/to/root" 
    files_of_type = [".py"] 

returns {"filex.py": "/path/to/root/folder1".. and so on} 

Любые предложения Спасибо

+0

У вас есть два вопроса: 1) Как получить список файлов рекурсивно и 2) как отфильтровать файлы на основе расширения. Если вы ищете, вы можете найти обе эти вещи. –

ответ

2

Вы можете сделать это с . Для каждого уровня каталога он предоставит вам путь к каталогу, список имен всех подкаталогов и список любых имен файлов в этом каталоге. Оттуда вы можете собрать словарь для возврата.

1
import os 

def get_files(root, files_of_type): 
    rv = {} 

    for cwd, folders, files in os.walk(root): 
     for fname in files: 
      # os.path.splitext splits a filename into a tuple like so: 
      # (file_path, extension) 
      if os.path.splitext(fname)[1] in files_of_type: 
       # key = filename, value = directory of file 
       rv[fname] = cwd 

    return rv 
Смежные вопросы