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循环(包括while&for)各种打印九九乘法表的实例
Nov 06 Python
深入理解python中函数传递参数是值传递还是引用传递
Nov 07 Python
分析python动态规划的递归、非递归实现
Mar 04 Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 Python
Python引用计数操作示例
Aug 23 Python
Django管理员账号和密码忘记的完美解决方法
Dec 06 Python
详解Python sys.argv使用方法
May 10 Python
python圣诞树编写实例详解
Feb 13 Python
Python MySQL 日期时间格式化作为参数的操作
Mar 02 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
May 19 Python
python高级特性简介
Aug 13 Python
python 多线程爬取壁纸网站的示例
Feb 20 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
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
jqgrid 简单学习笔记
2011/05/03 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
jQuery产品间断向下滚动效果核心代码
2014/05/08 Javascript
使用jquery解析XML的方法
2014/09/05 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
2015/08/25 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
分享Bootstrap简单表格、表单、登录页面
2017/08/04 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
2019/08/07 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
使用Python3中的gettext模块翻译Python源码以支持多语言
2015/03/31 Python
python Socket之客户端和服务端握手详解
2017/09/18 Python
Python处理菜单消息操作示例【基于win32ui模块】
2018/05/09 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
python Scrapy框架原理解析
2021/01/04 Python
css3媒体查询中device-width和width的区别详解
2020/03/27 HTML / CSS
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
介绍一下grep命令的使用
2012/06/28 面试题
写给保洁员表扬信
2014/01/08 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
2015年毕业生实习评语
2015/03/25 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
2016大一新生军训感言
2015/12/08 职场文书
深入理解pytorch库的dockerfile
2022/06/10 Python