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 logging类库使用例子
Nov 22 Python
Python连接phoenix的方法示例
Sep 29 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
在Python中构建增广矩阵的实现方法
Jul 01 Python
导入tensorflow时报错:cannot import name 'abs'的解决
Oct 10 Python
Django xadmin开启搜索功能的实现
Nov 15 Python
Python实现word2Vec model过程解析
Dec 16 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
Jun 10 Python
Python requests模块安装及使用教程图解
Jun 30 Python
Python 在函数上添加包装器
Jul 28 Python
Python如何识别银行卡卡号?
Jun 10 Python
Python实战实现爬取天气数据并完成可视化分析详解
Jun 16 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用mysql数据库存储session的代码
2010/03/05 PHP
php自动加载方式集合
2016/04/04 PHP
php支持断点续传、分块下载的类
2016/05/02 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
PHP实现的杨辉三角求解算法分析
2019/03/11 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
实例解析jQuery中如何取消后续执行内容
2016/12/01 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
详解vue的diff算法原理
2018/05/20 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
vue实现动态按钮功能
2019/05/13 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
python OpenCV学习笔记实现二维直方图
2018/02/08 Python
Python简单实现网页内容抓取功能示例
2018/06/07 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
关于python多重赋值的小问题
2019/04/17 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
JSF的标签库有哪些
2012/04/27 面试题
工厂总经理岗位职责
2014/02/07 职场文书
2014四风问题对照检查材料范文
2014/09/15 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python