我想列出目录结构中的所有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
文件以及Archive
和Historie
文件夹中的文件。
使用Python Glob
模块可以做到吗?还是有更好的解决方案将其存档?
答案 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