2015-07-01 3 views
-1

Я пытаюсь получить вложенный вид каталогов и подкаталогов в HTML, преобразованный с помощью Python. Например:Сканирование и печать каталогов, подкаталогов и файлов

- dir 
- dir 
- dir 
    - subdir 
    - subdir 
    - subdir 
     - subdir 
    - subdir 
- dir 
    - subdir 
    - subdir 
    - subdir 

Мой Python код:

dirs = [] 

for dirName, subdirList, fileList in os.walk(disk): 
    dirs.append(dirName) 

Массив dirs успешно создан и заполнен, но я хочу, чтобы преобразовать этот массив в вложенным HTML <ul> тегов.

count = 0 

for i in dirs: 
    if count > 0: 
     if dirs[count -1] in i: 
      html += '<ul><li>' + i + '</li></ul>' 
      previous = i 
     else: 
      html += '<li>' + i + '</li>' 
    else: 
     html += '<li>' + i + '</li>' 

    count = count + 1 

Но как я могу получить пример просмотра реж/подкаталогов в гнездовой HTML <ul> тега с вложенными элементов?

+0

... рекурсивно? – jonrsharpe

ответ

0

Я считаю, что было бы проще использовать os.lisdir() и os.path.isdir() и рекурсивную функцию для создания html, который вы хотите, вместо использования os.walk().

Пример -

import os 
import os.path 
def createHTML(d): 
    res = '<ul>' 
    lds = os.listdir(d) 
    for l in lds: 
      if os.path.isdir(os.path.join(d,l)): 
        res += '<li>' + l 
        res += createHTML(os.path.join(d,l)) 
        res += '</li>' 
    res += '</ul>' 
    return res 

Когда я бегу выше, в одном из своих каталогов, я получаю -

  • совместно
    • упак
      • __pycache__
  • __pycache__
+0

Спасибо, это работает! – l0ngest

+0

Пожалуйста, не забудьте принять ответ (для всех ваших вопросов, а не только для этого) , если они помогут вам удовлетворительно, помогут сообществу –

0

Мой друг разработал сценарий для печати каталогов рекурсивно.

Вы должны взглянуть на это: MaxHalford/Directory-Architecture.
Вы можете игнорировать файлы с определенными расширениями или отображать n уровней каталогов.

Выходной пример:

sh ./probe example/

example 
├───┐ static 
│ ├───┐ js 
│ │ ├─── Leaflet.vector-markers.min.js 
│ │ └─── Leaflet.vector-markers.js 
│ ├───┐ data 
│ │ └─── Toulouse.csv 
│ └───┐ css 
│  ├─── Leaflet.vector-markers.css 
│  └─── Leaflet.vector-markers.css.map 
├───┐ lib 
│ ├─── __init__.py 
│ └─── JCDecaux.py 
├───┐ templates 
│ └─── index.html 
├─── serve.py 
└─── update.py 
Смежные вопросы