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常见文件操作的函数示例代码
Nov 15 Python
Python中自定义函数的教程
Apr 27 Python
Python中的filter()函数的用法
Apr 27 Python
Python调用ctypes使用C函数printf的方法
Aug 23 Python
Python基于csv模块实现读取与写入csv数据的方法
Jan 18 Python
Python中print和return的作用及区别解析
May 05 Python
python+openCV利用摄像头实现人员活动检测
Jun 22 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
解析Python3中的Import
Oct 13 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
python爬虫使用requests发送post请求示例详解
Aug 05 Python
python hmac模块验证客户端的合法性
Nov 07 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
FleaPHP的安全设置方法
2008/09/15 PHP
需要发散思维学习PHP
2009/06/29 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
表格奇偶行设置不同颜色的核心JS代码
2013/12/24 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
webpack中引用jquery的简单实现
2016/06/08 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
弱类型语言javascript中 a,b 的运算实例小结
2019/08/07 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
python使用PyCharm进行远程开发和调试
2017/11/02 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
tensorflow实现在函数中用tf.Print输出中间值
2020/01/21 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
Python字典取键、值对的方法步骤
2020/09/30 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
const和static readonly区别
2013/05/20 面试题
公务员职业生涯规划书范文  
2014/01/19 职场文书
教师校本培训方案
2014/02/26 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
药店采购员岗位职责
2014/09/30 职场文书
小学生学习保证书
2015/02/26 职场文书
公司开业主持词
2015/07/02 职场文书
在Django中使用MQTT的方法
2021/05/10 Python
python单向链表实例详解
2022/05/25 Python
nginx七层负载均衡配置详解
2022/07/15 Servers