python实现树形打印目录结构


Posted in Python onMarch 29, 2018

本文实例为大家分享了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查找第k小元素代码分享
Dec 18 Python
python正则匹配查询港澳通行证办理进度示例分享
Dec 27 Python
Python中使用第三方库xlrd来写入Excel文件示例
Apr 05 Python
Python内置函数OCT详解
Nov 09 Python
Python无损音乐搜索引擎实现代码
Feb 02 Python
详解多线程Django程序耗尽数据库连接的问题
Oct 08 Python
python实现合并多个list及合并多个django QuerySet的方法示例
Jun 11 Python
Python matplotlib学习笔记之坐标轴范围
Jun 28 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
python使用PIL剪切和拼接图片
Mar 23 Python
Python环境下安装PyGame和PyOpenGL的方法
Mar 25 Python
Python读取文件夹下的所有文件实例代码
Apr 02 Python
Python基础教程之利用期物处理并发
Mar 29 #Python
Windows下安装Django框架的方法简明教程
Mar 28 #Python
Python实现的FTP通信客户端与服务器端功能示例
Mar 28 #Python
Python实现发送与接收邮件的方法详解
Mar 28 #Python
Python实现线程状态监测简单示例
Mar 28 #Python
python实现朴素贝叶斯分类器
Mar 28 #Python
详解Python中where()函数的用法
Mar 27 #Python
You might like
PHP如何透过ODBC来存取数据库
2006/10/09 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
php学习笔记之面向对象编程
2012/12/29 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
Google的跟踪代码 动态加载js代码方法应用
2012/11/12 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
web css实现整站样式互相切换
2013/10/29 Javascript
js与jquery正则验证电子邮箱、手机号、邮政编码的方法
2016/07/04 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
js实现鼠标左右移动,图片也跟着移动效果
2017/01/25 Javascript
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
vue使用showdown并实现代码区域高亮的示例代码
2019/10/17 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
[02:45]DOTA2英雄基础教程 伐木机
2013/12/23 DOTA
Python学习小技巧之列表项的推导式与过滤操作
2017/05/20 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
python实现简易版学生成绩管理系统
2020/06/22 Python
如何在pycharm中安装第三方包
2020/10/27 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
2021/01/07 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
2021/02/20 Python
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
Lookfantastic希腊官网:英国知名美妆购物网站
2018/09/15 全球购物
机械专业应届生求职信
2013/09/21 职场文书
中英双版中文教师求职信
2013/10/27 职场文书
接受捐赠答谢词
2014/01/27 职场文书
学校十一活动方案
2014/02/01 职场文书
中秋节主持词
2014/04/02 职场文书
爱国演讲稿400字
2014/05/07 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
企业安全生产检查制度
2015/08/06 职场文书
python自动化之如何利用allure生成测试报告
2021/05/02 Python
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android