Python列出子目录中的所有文件,但排除某些目录

时间:2019-03-28 09:28:25

标签: python python-3.x glob

我想列出目录结构中的所有txt文件,但要排除某些特定的文件夹。

例如,我要在

下获取所有txt个文件

D:\_Server\<subfolders>\Temp_1\Config\

D:\_Server\<subfolders>\Temp_1\Config\Stat 但排除

D:\_Server\<subfolders>\Temp_1\Config\Historie\

D:\_Server\<subfolders>\Temp_1\Config\Archive\

要获取所有文件,我使用了以下代码:

glob.glob('D:\\_Server\\**\\Config\\**\\*.olc', recursive=True)

这将导致列出所有txt文件以及ArchiveHistorie文件夹中的文件。

使用Python Glob模块可以做到吗?还是有更好的解决方案将其存档?

2 个答案:

答案 0 :(得分:1)

您可以仅过滤结果列表,例如使用列表理解:

allResults = glob.glob('D:\\_Server\\**\\Config\\**\\*.olc', recursive=True)
filteredResults = [r for r in allResults if not "Archive" in r and not "Historie" in r]

答案 1 :(得分:1)

您还可以使用os进行此操作:

import os
extensions = ('.txt')                                    #extinctions want to search
exclude_directories = set(['exclude_directory_name'])    #directory (only names) want to exclude
for dname, dirs, files in os.walk('/root/path/to/directory'):  #this loop though directies recursively 
    dirs[:] = [d for d in dirs if d not in exclude_directories] # exclude directory if in exclude list 
    for fname in files:
        if(fname.lower().endswith(extensions)): #check for extension 
           fpath = os.path.join(dname, fname)   #this generate full directory path for file
           print fpath