專案檔案總是亂?用 pathlib + tree 打造清晰目錄結構!

很多時候我們在網路上看到有關軟體開發的教學文章,都會事先呈現撰寫程式的資料夾目錄,尤其是越大型的專案開發,越需要更加明確的專案目錄進行規劃,下面麥特會介紹使用計種不同方法將專案目錄呈現出來的方式,不管是在學校的專題報告、工作報告,甚至是軟體開發的教學文章,都可以讓人更加容易的理解其專案目錄的內容唷!

本篇內容我們將會分享三種方式來進行專案目錄的解析,分別為 :

  • os
  • pathlib
  • pathlib 和 tree

使用 os 套件解析目錄

使用 Python os 套件來列出目錄下所有檔案和資料夾,我們將路徑設定為"." 表示當前的目錄:

import os

def list_files_and_folders(directory):

    for root, dirs, files in os.walk(directory):
        print(root)
        
        for name in files:
            print(name)

# 列出指定的目錄路徑,如果是當前目錄,則使用"."作為目錄路徑
directory = "."

list_files_and_folders(directory)

可以看出輸出的結果並沒有將父資料夾與子資料夾進行縮排的規劃,以至於專案目錄的分層不是很明確,接著改寫打印出來結果

import os

def list_files_and_folders(directory):

    for root, dirs, files in os.walk(directory):
        print(f"資料夾: {root}")
        
        for name in files:
            print(f"  檔案: {name}")

# 列出指定的目錄路徑,如果是當前目錄,則使用"."作為目錄路徑
directory = "."

list_files_and_folders(directory)

解析出來的專案目錄可以看出,會將資料夾與檔案類型分別描述出來,這樣的呈現方式會感覺比較凌亂,接著我們再使用不同的方法解析目錄。

使用 pathlib 套件解析目錄

我們使用 pathlib,來遞迴打印出指定目錄下所有的檔案和資料夾 :

from pathlib import Path

def list_files_and_folders(directory):

    path = Path(directory)

    for item in path.rglob("*"):

        if item.is_file():
            print(item)
            
        elif item.is_dir():            
            print(item)

# 替換為您想列出的目錄路徑
directory = "."

list_files_and_folders(directory)

打印出來的結果會發現,如果遇到子資料夾,在呈現的時候,每遇到一個子資料夾內的檔案,就需要再將子資料夾的名稱顯示出來,在閱讀上也顯得較為複雜。

使用 pathlib 與 tree 套件解析目錄

我們想要更視覺化的呈現目錄的階層結構,所以使用 tree 套件來達到效果,tree 套件可以生成樹狀結構,可以直接打印出樹狀結構的目錄,首先需要安裝 tree 套件:

pip install treelib

安裝後,我們使用 pathlib 與 tree 生成樹狀結構:

from treelib import Tree, Node
from pathlib import Path

def create_tree(directory, tree=None):
    # 如果尚未創建樹,創建根節點
    if tree is None:
        tree = Tree()
        tree.create_node(directory, directory)  # 根節點

    path = Path(directory)

    # 遍歷目錄中的每個項目
    for item in path.iterdir():
        # 為每個項目創建一個節點,並設置父節點
        tree.create_node(item.name, item, parent=directory)

        # 如果項目是目錄,則遞歸調用處理子目錄
        if item.is_dir():
            create_tree(item, tree=tree)

    return tree

# 請替換為你想要創建樹的目錄路徑
directory = "."  # 預設為當前目錄

# 創建目錄樹
tree = create_tree(directory)

# 使用 print 來顯示目錄樹
print(tree)

輸出的結果用樹的階層式進行呈現,所以閱讀起來更加的直觀,方便我們了解目錄當中所有檔案的位置,同時也有顯示出檔案的附檔名,利於我們分辨出不同的檔案類型。

選擇好用的目錄解析工具,能清楚的向其他人說明專案資料的檔案分布,希望每個人都有適合的專案目錄呈現工具,讓人一目瞭然,這也是身為軟體工程師十分重要的能力之一唷 !

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *