python實現(xiàn)樹形打印目錄結(jié)構(gòu)
本文實例為大家分享了python樹形打印目錄結(jié)構(gòu)的具體代碼,供大家參考,具體內(nèi)容如下
前言
這兩天整理數(shù)據(jù)文件的時候發(fā)現(xiàn),一層層的點擊文件夾查看很繁瑣,于是想寫一個工具來遞歸打印出文件目錄的樹形結(jié)構(gòu),網(wǎng)上找了一些資料幾乎都是使用的os.walk, 調(diào)試了以后發(fā)現(xiàn)返回的貌似的是一個“生成器”,只需要for循環(huán)即可,可是這樣得到的好像是BFS的結(jié)構(gòu),并不是我想要的樹形結(jié)構(gòu),最后終于發(fā)現(xiàn)了os.listdir這個函數(shù),可是使用它來寫一個深度優(yōu)先搜索,只要遞歸調(diào)用就能解決我的問題。
代碼
#!/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
總結(jié)
- 一開始寫的時候發(fā)現(xiàn)只能遞歸一層文件夾,后來發(fā)現(xiàn)問題出現(xiàn)在os.path.isdir函數(shù)這里。
- 傳給os.path.isdir函數(shù)函數(shù)的參數(shù)只能是一個絕對路徑,或者相對于工作目錄的相對路徑。
- 有了上面發(fā)現(xiàn)的問題,才有了newitem變量拼接的過程。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python中g(shù)etattr函數(shù)使用方法 getattr實現(xiàn)工廠模式
這篇文章主要介紹了python中g(shù)etattr()這個函數(shù)的一些用法,大家參考使用吧2014-01-01Python調(diào)用jar包方法實現(xiàn)過程解析
這篇文章主要介紹了Python調(diào)用jar包方法實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-08-08Python工廠模式實現(xiàn)封裝Webhook群聊機器人詳解
企業(yè)存在給 特定群組 自動推送消息的需求,你可以在群聊中添加一個自定義機器人,通過服務(wù)端調(diào)用 webhook 地址,即可將外部系統(tǒng)的通知消息即時推送到群聊中。本文就來和大家聊聊具體實現(xiàn)方法2023-02-02跟老齊學(xué)Python之使用Python查詢更新數(shù)據(jù)庫
前面我們講述了使用python操作數(shù)據(jù)庫,今天我們來更進一步,介紹下python查詢、更新數(shù)據(jù)庫的相關(guān)操作。有需要的小伙伴自己參考下吧。2014-11-11