python實(shí)現(xiàn)樹(shù)形打印目錄結(jié)構(gòu)
本文實(shí)例為大家分享了python樹(shù)形打印目錄結(jié)構(gòu)的具體代碼,供大家參考,具體內(nèi)容如下
前言
這兩天整理數(shù)據(jù)文件的時(shí)候發(fā)現(xiàn),一層層的點(diǎn)擊文件夾查看很繁瑣,于是想寫一個(gè)工具來(lái)遞歸打印出文件目錄的樹(shù)形結(jié)構(gòu),網(wǎng)上找了一些資料幾乎都是使用的os.walk, 調(diào)試了以后發(fā)現(xiàn)返回的貌似的是一個(gè)“生成器”,只需要for循環(huán)即可,可是這樣得到的好像是BFS的結(jié)構(gòu),并不是我想要的樹(shù)形結(jié)構(gòu),最后終于發(fā)現(xiàn)了os.listdir這個(gè)函數(shù),可是使用它來(lái)寫一個(gè)深度優(yōu)先搜索,只要遞歸調(diào)用就能解決我的問(wèn)題。
代碼
#!/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)
運(yùn)行效果
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é)
- 一開(kāi)始寫的時(shí)候發(fā)現(xiàn)只能遞歸一層文件夾,后來(lái)發(fā)現(xiàn)問(wèn)題出現(xiàn)在os.path.isdir函數(shù)這里。
- 傳給os.path.isdir函數(shù)函數(shù)的參數(shù)只能是一個(gè)絕對(duì)路徑,或者相對(duì)于工作目錄的相對(duì)路徑。
- 有了上面發(fā)現(xiàn)的問(wèn)題,才有了newitem變量拼接的過(guò)程。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python+selenium?實(shí)現(xiàn)掃碼免密登錄示例代碼
這篇文章主要介紹了python+selenium?實(shí)現(xiàn)掃碼免密登錄,首先掃碼登錄獲取cookies保存到本地未后面免密登錄做準(zhǔn)備,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
python讀取csv和txt數(shù)據(jù)轉(zhuǎn)換成向量的實(shí)例
今天小編就為大家分享一篇python讀取csv和txt數(shù)據(jù)轉(zhuǎn)換成向量的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
python基于Selenium的web自動(dòng)化框架
這篇文章主要介紹了python基于Selenium的web自動(dòng)化框架,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python3.7安裝keras和TensorFlow的教程圖解
這篇文章主要介紹了Python3.7安裝keras和TensorFlow經(jīng)驗(yàn),本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
Python 自動(dòng)化處理Excel和Word實(shí)現(xiàn)自動(dòng)辦公
毫無(wú)疑問(wèn),Microsoft Excel 和 Word 是我們?nèi)粘^k公中使用最廣泛的辦公軟件。將反復(fù)、復(fù)雜的工作自動(dòng)化處理,是我們需要思考的問(wèn)題,本篇文章幫你解決這個(gè)問(wèn)題2021-11-11
pyqt5 從本地選擇圖片 并顯示在label上的實(shí)例
今天小編就為大家分享一篇pyqt5 從本地選擇圖片 并顯示在label上的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
一文搞懂???????python可迭代對(duì)象,迭代器,生成器,協(xié)程
這篇文章主要介紹了一文搞懂???????python可迭代對(duì)象,迭代器,生成器,協(xié)程,微博吱嘎部分圍繞主題展開(kāi)詳細(xì)介紹,需要的小伙伴可以參考一下2022-05-05

