這篇文章主要為大家詳細介紹了python樹形列印目錄結構的相關程式碼,具有一定的參考價值,有興趣的小夥伴們可以參考一下
本文實例為大家分享了python樹狀列印目錄結構的具體程式碼,供大家參考,具體內容如下
前言
#這兩天整理資料檔的時候發現,一層層的點擊資料夾查看很繁瑣,於是想寫一個工具來遞歸打印出文件目錄的樹形結構,網上找了一些資料幾乎都是使用的os.walk, 調試了以後發現返回的貌似的是一個「生成器」,只需要for循環即可,可是這樣得到的好像是BFS的結構,並不是我想要的樹形結構,最後終於發現了 os.listdir這個函數,可是用它來寫一個深度優先搜索,只要遞歸呼叫就能解決我的問題。
程式碼
#!/usr/bin/env python3 # -*- coding: utf-8 -*- #a test for traverse directory __author__ = 'AlbertS' import os import os.path def dfs_showdir(path, depth): if depth == 0: print("root:[" + path + "]") for item in os.listdir(path): if '.git' not in item: print("| " * depth + "+--" + item) newitem = path +'/'+ item if os.path.isdir(newitem): dfs_showdir(newitem, depth +1) if __name__ == '__main__': dfs_showdir('.', 0)
#執行效果
root:[.] +--1111.segmentfault.com | +--01decode.py | +--01string.txt | +--1111.segmentfault.com.tar.gz +--urllib_test.py +--use_module.py +--water_deal | +--water_pouring2.py +--web | +--module_test.py | +--__init__.py | +--__pycache__ | | +--module_test.cpython-34.pyc | | +--__init__.cpython-34.pyc +--web_crawler | +--bg_teaser.svg | +--crawler_images | | +--10393478-1.jpg | | +--13802226-1.jpg | | +--169b1b76356f636.jpg | | +--1a774de56fb4bf2.jpg | | +--small_event_dft.jpg | | +--ypy_qr.jpg | +--crawler_image_test.py | +--crawler_test.py | +--crawler_website | | +--crawler_article_set | | | +--aiohttp.html | | | +--asyncio.html | | | +--async_await.html | | | +--base64.html
總結
一開始寫的時候發現只能遞歸一層資料夾,後來發現問題出現在os.path.isdir函數這裡。
傳給os.path.isdir函數函數的參數只能是絕對路徑,或是相對於工作目錄的相對路徑。
有了上面發現的問題,才有了newitem變數拼接的過程。
相關推薦:
# #
以上是python實作樹形列印目錄結構_python的詳細內容。更多資訊請關注PHP中文網其他相關文章!