在Python中,我們經(jīng)常需要處理文件的目錄結(jié)構(gòu)。而將目錄結(jié)構(gòu)以一種樹狀圖的形式進行可視化,有助于我們更好地了解文件的層次結(jié)構(gòu),也能夠更加方便地對文件進行管理。Python中可以用os模塊和shutil模塊來處理目錄樹形結(jié)構(gòu)。下面介紹一種常見的生成目錄樹狀圖的方法。
import os def get_tree(path, prefix='', is_last=False): """返回指定路徑的目錄樹狀圖""" if not prefix: # 如果是根目錄,則不需要進行前綴處理 prefix = '' elif is_last: prefix += '`-- ' else: prefix += '|-- ' entries = os.scandir(path) entries = sorted(entries, key=lambda e: e.name.lower()) mid_prefix = '| ' if not is_last else ' ' lines = [f"{prefix}{entry.name}\n{get_tree(entry.path, prefix + mid_prefix, i == len(entries) - 1)}" for i, entry in enumerate(entries)] return '\n'.join(lines) if __name__ == '__main__': tree = get_tree('.') print(tree)
以上代碼中,我們定義了一個函數(shù)get_tree來獲取指定路徑下的目錄樹狀圖。該函數(shù)接收三個參數(shù):path為指定路徑,prefix為前綴,is_last表示當前是否為最后一個目錄。這個函數(shù)使用了os模塊中的scandir方法來掃描目錄下的所有文件和子目錄,并遞歸調(diào)用自身來處理子目錄的目錄樹狀圖。最后將所有的目錄樹狀圖合并成一個字符串,并返回給調(diào)用者。
在主程序中,我們調(diào)用這個函數(shù),并將返回結(jié)果打印出來。在執(zhí)行完這段代碼之后,我們可以看到當前目錄下的子目錄和文件以樹狀圖的形式展示出來。