Advertisement
Guest User

WINNER v1.3

a guest
May 5th, 2015
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.62 KB | None | 0 0
  1. # -*- coding: 1251 -*-
  2. """winner v1.3 from 05.05.2015"""
  3. import os #модуль для проверки на файл/директорию, получения списка файлов в директории
  4. import re #модуль регулярных выражений - поиск по шаблону в строке
  5. from operator import truth #перевод результата регулярного выражения в логический тип
  6.  
  7. def outList(str, ptrn): #функция вывода списка файлов по искомому шаблону
  8.     if not os.path.isdir(str): #проверка если при вызове из главной программы было передано путь не ведущей к директории
  9.         print('"' + str + '" not a directory!') #вывод ошибки
  10.     else: #иначе - обработка директории (при рекурсивных вызовах outList аргумент str будет всегда ссылаться на директорию)
  11.         fileList = os.listdir(str) #получить список обьектов в директории
  12.         for item in fileList: #для всех обьектов
  13.             if os.path.isdir(os.path.join(str, item)): #если это директория
  14.                 outList(os.path.join(str, item), ptrn) #рекурсивно обработать как директорию
  15.             else: #иначе - обработать как файл
  16.                 f = open(os.path.join(str, item), 'r') #открыть файл на чтение
  17.                 s = f.read() #считать строку (в файлах всегда одна строка)
  18.                 if truth(re.search(ptrn, s)): #если строка из файла совпадает с искомым шаблоном ...
  19.                     print(os.path.join(str, item)) # ... то вывести путь к этому файлу
  20.  
  21. ### MAIN PROGRAM ###
  22. if __name__ == "__main__":
  23.     print ('Файл нужно импортировать в главную программу')
  24. else:  
  25.     path = raw_input('Set path :')
  26.     if not os.path.isdir(path):
  27.         print ('path dont exists!!!')
  28.     else:#указать путь к директории - в этом случае путь задается относительно файла-скрипта
  29.         pattern = '\w*W\wI\wN\wN\wE\wR\w*' #задается шаблон
  30.         outList(path, pattern) #запуск функции с аргументами: путь к директории, шаблон для поиска строки в файлах
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement