На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD
  
    > Построение пути к файлу
      Здравствуйте. Помогите решить задание на рекурсию.

      версия 2.7

      Надо написать функцию file_search(folder, filename),
      на входе 2 аргументиы - список folder и строка filename,
      результат работы - полный путь к файлу filename в структуре folder

      структура folder:
      список - папка с файлами, 0-й элемент - название папки, все остальные - или файлы или вложенные папки, которые так же представляются списками.
      (1 файл = 1 елемент списка). Имя каждого элемента оригинальное, повторения недопустимы.

      Например:
      file_search([ 'D:', ['folder1'], ['folder2', ['folder2_1'], ['folder2_2', 'file1', 'file2', 'file3' ] ], 'file0'], 'file2')
      результат:
      D:/folder2/folder2_2/file2

      если файл не найден - вывести False.

      Вот мой набросок. Если файл встречается, все работает как надо. Но если файла нету...вот здесь нужна подсказка
      ExpandedWrap disabled
        def file_search(folder, filename):
            if isinstance(folder,list):
                link = ''
                if len(folder) > 1:
                    for item in folder[1:]:
                        if link.find(filename) == -1:
                            link = folder[0] + '/' + file_search(item, filename)
                    return link
                else:
                    return link
            elif folder==filename:
                return filename
            else:
                return ''


      Не прошу сделать за меня, прошу, по возможности, подтолкнуть меня к решению задачи
      Сообщение отредактировано: Aleksandr H. -
        Скрытый текст
        ExpandedWrap disabled
           def file_search(folder, filename):
              print 'working with: ',
              print folder
              print
              if isinstance(folder,list):
                  print 'list found',
                  print folder
                  print
                  link = ''
                  n = None
                  if len(folder) > 1:
                      for item in folder[1:]:
                          print 'active element',
                          print item
                          print '>>curr path to file',
                          print link
                          print
                          if link.find(filename) == -1:
                              n = file_search(item,filename)
                              if n != False:
                                  link = folder[0] + '/' + n
                      print 'path : ',
                      print link
                      print
                      if link.find(filename) != -1:
                          return link
                      else:
                          return False
                  else:
                      print 'empty folder ',
                      print link
                      print
                      return False #link
              elif folder==filename:
                  print 'file found!!'
                  print
                  return filename
              else:
                  print 'unnecessary file'
                  return False

        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0235 ]   [ 15 queries used ]   [ Generated: 28.03.24, 19:59 GMT ]