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

Kev*_*vin 1 python glob python-3.x

我想列出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)
Run Code Online (Sandbox Code Playgroud)

这会导致所有txt文件的列表Archive以及Historie文件夹中的文件。

这可以通过 PythonGlob模块实现吗?或者有更好的解决方案来存档吗?

Sha*_*nde 5

你也可以使用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
Run Code Online (Sandbox Code Playgroud)