2012-12-08 167 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} 

因此,举例来说,如果我想获得的所有文件和它们的扩展PY的路径

那么这将是这样的:

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 
相关问题