2013-04-26 3 views
0

Я пытаюсь разобрать этот каталог, и я хочу видеть все файлы txt, за исключением трех конкретных имен. С кодом, который я написал, я могу получить все текстовые файлы во всех каталогах.Как я могу игнорировать определенные файлы при разборе каталога?

for root,dirnames,filenames in os.walk('D:/datast12'): 
    for filename in fnmatch.filter(filenames, '*.txt'): 
     matches.append([root,filenames]) 

Кто-нибудь знает, как я могу это сделать?

ответ

2
files_to_ignore = ('abc.txt', 'foo.txt', 'bar.txt') 

for root,dirnames,filenames in os.walk('D:/datast12'): 
    for filename in fnmatch.filter(filenames, '*.txt'): 
     if filename in files_to_ignore: continue 
     matches.append([root,filenames]) 
+1

или просто: 'если имя файла не files_to_ignore: matches.append ([корень, имена файлов])' –

+0

или даже проще, если 'matches' должен был быть пустым в начале:' матчи = [[ root, filenames] для корня, dirnames, filenames в os.walk ('D:/datast12') для имени файла в файле fnmatch.filter (имена файлов, '* .txt'), если имя файла не указано в files_to_ignore] ' – glglgl

+0

и, files_to_ignore', тем важнее: если это 'set()', операция 'in' /' not in' работает быстрее. – glglgl