码迷,mamicode.com
首页 > 编程语言 > 详细

Python树形打印目录结构

时间:2018-12-17 14:15:42      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:str   dir   import   title   list   asyncio   eal   ams   param   

前言

这两天整理数据文件的时候发现,一层层的点击文件夹查看很繁琐,于是想写一个工具来递归打印出文件目录的树形结构,网上找了一些资料几乎都是使用的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

总结

  1. 一开始写的时候发现只能递归一层文件夹,后来发现问题出现在os.path.isdir函数这里。
  2. 传给os.path.isdir函数函数的参数只能是一个绝对路径,或者相对于工作目录的相对路径。
  3. 有了上面发现的问题,才有了newitem变量拼接的过程。

Python树形打印目录结构

标签:str   dir   import   title   list   asyncio   eal   ams   param   

原文地址:https://www.cnblogs.com/wangshicheng/p/10130633.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!