在寫一些文章時,尤其是一些技術文章或者教程,有時需要將目錄結構附在文中,最簡單粗暴的方法是自己手動寫,但是效率太低,今天就來介紹一下高效率、美觀的方法。
1、cmd生成目錄樹
在 windows 系統中,有乙個 cmd 指令可以生成目錄樹,該條指令是 "tree" 。
1.1 檢視幫助
使用 「win+r" 快捷鍵調出執行 對話方塊,然後輸入 」cmd「 回車開啟命令列視窗。可以在視窗中輸入 」tree /?" 檢視:
以圖形顯示驅動器或路徑的資料夾結構。
tree [drive:][path] [/f] [/a]
/f 顯示每個資料夾中檔案的名稱。
/a 使用 ascii 字元,而不使用擴充套件字元。
1.2 作用
從上述幫助文件中可以看出 tree 命令的作用是「以圖形顯示驅動器或路徑的資料夾結構」。
1.3 命令格式
如果我們只想在命令列視窗檢視 資料夾目錄結構,可以使用如下格式:
tree e:\programming\python\designpattern
輸出內容如下:
01_tree只列印資料夾結構
注意:如果路徑中含有空格,則路徑需要用雙引號包起來,例如tree "c:\program files" 。
上面的指令只能生成資料夾的目錄結構,並沒有顯示檔案,我們可以增加 /f 引數來顯示資料夾和檔案的目錄結構:
tree /f e:\programming\python\designpattern
這樣就ok了:
02_tree顯示資料夾和檔案結構
上述命令只是在控制台列印出來了,有時候會有儲存到檔案的需求,只需對上述命令稍作修改:
tree /f e:\programming\python\designpattern > dirtree.txt
命令執行之後,在命令列所在目錄下會生成乙個名為 「dirtree.txt」 的檔案,目錄結構已在其中。
2、python生成目錄樹
上述 cmd 方式雖然可以生成目錄樹,但是並不美觀,讓我們用 python 實現。
2.1 標準庫pathlib介紹
python有乙個標準檔案路徑處理庫 os.path ,從 python3.4 開始,python 又加入了乙個標準庫 pathlib ,該庫是跨平台的、物件導向的路徑操作庫。
path 類的引入:
from pathlib import path
建立 path 物件:
p = path('e:\programming\python\designpattern')
獲取 p 的路徑名稱:
print(p.name)
獲取 p 目錄下的所有檔案:
pit = p.iterdir() # 返回乙個迭代器,包含p下所有資料夾和檔案
判斷 p 是不是檔案:
print(p.is_file())
判斷 p 是不是目錄:
print(p.is_dir())
2.2 **實現
思路:給出乙個路徑,判斷是否為檔案,如果是,則字串拼接;否則,字串拼接並且遞迴查詢該目錄下的檔案。字串拼接的時候以縮進來顯示層次結構。
tree_str = ''
def generate_tree(pathname, n=0):
global tree_str
if pathname.is_file():
tree_str += ' |' * n + '-' * 4 + pathname.name + '\n'
elif pathname.is_dir():
tree_str += ' |' * n + '-' * 4 + \
str(pathname.relative_to(pathname.parent)) + '\\' + '\n'
for cp in pathname.iterdir():
generate_tree(cp, n + 1)
if __name__ == '__main__':
generate_tree(path.cwd())
print(tree_str)
輸出結果:
|----.ipynb_checkpoints\
| |----01_generate_tree-checkpoint.ipynb
|----01_generate_tree.ipynb
2.3 改進,顯示指定目錄
python樹函式 從表示式樹建立python函式
我假設你的表示式樹是由許多物件組成的,它們的型別對應於它是什麼樣的表示式。例如,or,equals,strings等,類似於 class orexpression def init self,left,right self.left left self.right right class equal...
python建立目錄樹 使用python生成目錄樹
這是乙個使用python生成檔案 目錄樹的程式,其中遇到乙個問題是 如何確定某個目錄下的某一檔案是最後乙個遍歷的檔案。因為最後乙個遍歷的檔案前應新增 非最後乙個檔案前新增 看了python的api文件沒有找到相關的系統函式。現在做法是 先統計出某個目錄下的檔案個數,在遍歷目錄時,當個數相等時,就可以...
python中如何建立包 如何建立python的包
包是模組的集合,更適合乙個專案。像很多的第三方知名的模組都是以包的形式存 簡單的包實現 自己做乙個ammd包,功能簡單的只有加減乘除等功能,加減在乙個模組matham裡,乘除位於另乙個模組裡mathmd。下面是matham模組的 def add x,y return x ydef minus x,y...