首頁  >  文章  >  web前端  >  python實作樹形列印目錄結構_python

python實作樹形列印目錄結構_python

不言
不言原創
2018-04-02 16:31:202122瀏覽

這篇文章主要為大家詳細介紹了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實作用生成器實作可迭代物件的方法

python實作對實例屬性進行類型檢查

# #

以上是python實作樹形列印目錄結構_python的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn