суббота, 6 февраля 2016 г.

Поиск файла в указанной директории и вложенных директориях.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#  searchFile.py
#  
#  Copyright 2016 denis8424
#  
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 2 of the License, or
#  (at your option) any later version.
#  
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#  
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#  MA 02110-1301, USA.
#  
#
import os

def main():
    # путь к папке, с которой мы начнем поиск
    cernelPath = '/home/denis8424/bge/land_disain/'
    # имя искомого файла
    nameFile = 'soil.jpg'
    # осуществляем поиск и сохраняем результат
    search = searchFile(cernelPath, nameFile)
    # выводим результат поиска на экран
    print(search)
    return 0

def searchFile(startPath, nameFile):
    # результат поиска, по умолчанию "ничего не нашли", он же флаг
    result = False
    # список всех путей к папкам, в которых будем искать
    listPaths = [startPath]
    # просматриваем доступные пути к директориям
    for path in listPaths:
        # просматриваем содержимое текущей папки
        for ob in os.listdir(path):
            # если файл, тот что нам нужен        
            if ob == nameFile:
                # то изменяем значение флага на путь к файлу
                result = path + ob
                # и выходим из этого цикла
                break
            # если же файл не тот, что нужен, но является папкой
            elif os.path.isdir(ob):
                # добавляем путь к новой папке в список всех путей для
                # последующего поиска там
                newPath = path + ob + '/'
                listPaths.append(newPath)
        # если в предыдущем цикле что-то нашли, то выходим и из этого цикла.
        if result != False:
            break
         
    # красиво оформляем фейл поиска    
    if result == False:
        result = 'Извините, по вашему запросу ничего не найдено'
     
    return result


if __name__ == '__main__':
main()


Красивого кода не получилось...

Комментариев нет:

Отправить комментарий