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实现网页链接提取的方法分享
Feb 25 Python
Python ORM框架SQLAlchemy学习笔记之数据查询实例
Jun 10 Python
Python xlrd读取excel日期类型的2种方法
Apr 28 Python
Python实现对excel文件列表值进行统计的方法
Jul 25 Python
Python自动生产表情包
Mar 17 Python
Request的中断和ErrorHandler实例解析
Feb 12 Python
Python中staticmethod和classmethod的作用与区别
Oct 11 Python
Python3的介绍、安装和命令行的认识(推荐)
Oct 20 Python
python适合人工智能的理由和优势
Jun 28 Python
完美解决pycharm导入自己写的py文件爆红问题
Feb 12 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 Python
python中把元组转换为namedtuple方法
Dec 09 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
ThinkPHP中的create方法与自动令牌验证实例教程
2014/08/22 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
Javascript毫秒数用法实例
2015/02/05 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
javascript正则表达式总结
2016/02/29 Javascript
vue2.0中goods选购栏滚动算法的实现代码
2017/05/17 Javascript
NodeJs中express框架的send()方法简介
2017/06/20 NodeJs
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
element-ui表格合并span-method的实现方法
2019/05/21 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
Python变量和字符串详解
2017/04/29 Python
Python scikit-learn 做线性回归的示例代码
2017/11/01 Python
python中的闭包函数
2018/02/09 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
html5视频播放_动力节点Java学院整理
2017/07/13 HTML / CSS
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
信访工作经验交流材料
2014/05/23 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
施工安全协议书范本
2014/09/26 职场文书
加强作风建设心得体会
2014/10/22 职场文书
怎么写工作检讨书
2014/11/16 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
刑事法律意见书
2015/06/04 职场文书
2015年暑假工作总结
2015/07/13 职场文书
2015年度学校应急管理工作总结
2015/10/22 职场文书
nginx反向代理配置去除前缀案例教程
2021/07/26 Servers