2014-07-08 3 views
0

Я изучаю python и пытаюсь написать некоторые скрипты-утилиты, чтобы ознакомиться с ним. Цель моего скрипта - прокрутить корневой каталог, найти файлы с определенным расширением, а затем запустить регулярное выражение в файле для их категоризации. Имена файлов уникальны, но имеют определенные общие биты, соответствующие категории.Использование Regex в списке имен файлов Python

Мне удалось прокрутить корневой каталог и распечатать файлы (для моих собственных целей тестирования) и добавить их в список.

import os, glob, fnmatch 

rootdir = '/test/dir/subdir/' 

match = [] 

for path, subdirs, files in os.walk(rootdir): 
    for file in fnmatch.filter(files, '*.txt'): 
     match.append(file) 
     print file 

Я хотел бы запустить набор регулярных выражений на моем матче [] список, и если их совпадение, вероятно, добавить этот файл в другой список, который будет использоваться в качестве подкатегории для файлов. Есть ли модуль или некоторые функции в python для этого?

Что-то вдоль линий:

for file in list: 
    if file.match(regex): 
     do_stuff() 

Благодарности

+2

Вы хотите использовать 're.match' из' re' библиотеки https://docs.python.org/ 2/library/re.html # re.match – MikeRixWolfe

+1

Комментарий MikeRixWolfe в основном ваш ответ. –

+0

Это действительно не хороший вопрос о переполнении стека - у вас уже есть концепция, и если вы наберете «регулярное выражение python» в Google, первый ответ буквально сообщает вам недостающую часть (имя библиотеки и как используй это) –

ответ

0
import os, glob, fnmatch, re 

rootdir = '/test/dir/subdir/' 

match, re_match = [], [] 

for path, subdirs, files in os.walk(rootdir): 
    for file in fnmatch.filter(files, '*.txt'): 
     full_path=os.path.join(path, file) 
#  match.append(file)     # don't you want the full path here? 
     # regexs: 
     if re.search(regex, file):  
      # re against the file name alone 
      ... 

     if re.search(regex, full_path): 
      # re against the path+file name 
      ... 
Смежные вопросы