溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python實現(xiàn)樹形打印目錄結(jié)構(gòu)

發(fā)布時間:2020-09-01 12:51:06 來源:腳本之家 閱讀:178 作者:AlbertS 欄目:開發(fā)技術(shù)

本文實例為大家分享了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)容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI