【问题标题】:Scan and print directories, subdirectories & files扫描和打印目录、子目录和文件
【发布时间】:2023-06-22 06:00:01
【问题描述】:

我正在尝试在 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

但是如何将 dir / subdir 视图示例放入嵌套的 HTML &lt;ul&gt; 标记中,并带有嵌套项?

【问题讨论】:

    标签: python python-2.7 subdirectory


    【解决方案1】:

    我相信使用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__

    【讨论】:

    • 请记住接受答案(对于您的所有问题,而不仅仅是这个)如果他们对您的帮助令人满意,将对社区有所帮助
    【解决方案2】:

    我的一个朋友开发了一个脚本来递归打印目录。

    你应该看看这个: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
    

    【讨论】:

      最近更新 更多