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程序设计入门(2)变量类型简介
Jun 16 Python
Python读写ini文件的方法
May 28 Python
python动态加载包的方法小结
Apr 18 Python
python实现QQ空间自动点赞功能
Apr 09 Python
Python多版本开发环境管理工具介绍
Jul 03 Python
python issubclass 和 isinstance函数
Jul 25 Python
在Python中用GDAL实现矢量对栅格的切割实例
Mar 11 Python
pycharm下pyqt4安装及环境配置的教程
Apr 24 Python
Python使用xlrd实现读取合并单元格
Jul 09 Python
matplotlib教程——强大的python作图工具库
Oct 15 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
Dec 09 Python
Python下载商品数据并连接数据库且保存数据
Mar 31 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
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
PHP实现中文圆形印章特效
2015/06/19 PHP
浅谈PHP表单提交(POST&GET&URL编/解码)
2017/04/03 PHP
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
js 日期比较相关天数代码
2014/04/02 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
jQuery搜索子元素的方法
2015/02/10 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
Angularjs 事件指令详细整理
2017/07/27 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
vue渲染时闪烁{{}}的问题及解决方法
2018/03/28 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
Python原始字符串(raw strings)用法实例
2014/10/13 Python
Python3调用微信企业号API发送文本消息代码示例
2017/11/10 Python
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
对python中return与yield的区别详解
2020/03/12 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
Keras使用ImageNet上预训练的模型方式
2020/05/23 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
2020/12/14 Python
2019年分享net面试的经历和题目
2016/08/07 面试题
机电一体化自荐信
2013/12/10 职场文书
文秘大学生求职信
2014/02/25 职场文书
个人委托书范本
2014/04/02 职场文书
企业宣传口号
2014/06/12 职场文书
信访维稳承诺书
2015/05/04 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
八年级作文之友谊
2019/12/02 职场文书
python源码剖析之PyObject详解
2021/05/18 Python