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中的sort方法使用详解
Jul 25 Python
初步认识Python中的列表与位运算符
Oct 12 Python
详解python的数字类型变量与其方法
Nov 20 Python
python利用urllib和urllib2访问http的GET/POST详解
Sep 27 Python
解决Python3中的中文字符编码的问题
Jul 18 Python
python3 selenium自动化 frame表单嵌套的切换方法
Aug 23 Python
python使用pip安装SciPy、SymPy、matplotlib教程
Nov 20 Python
python使用paramiko实现ssh的功能详解
Mar 06 Python
通过cmd进入python的步骤
Jun 16 Python
Django日志及中间件模块应用案例
Sep 10 Python
如何基于python实现年会抽奖工具
Oct 20 Python
python运算符之与用户交互
Apr 13 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 IPV6正则表达式验证代码
2010/02/16 PHP
使用php实现快钱支付功能(涉及到接口)
2013/07/01 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
2017/05/20 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
js 分页全选或反选标识实现代码
2011/08/09 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
AngularJS实现select的ng-options功能示例
2017/07/12 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
ES6 十大特性简介
2020/12/09 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
vc6编写python扩展的方法分享
2014/01/17 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
Selenium元素的常用操作方法分析
2018/08/10 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
如何表示python中的相对路径
2020/07/08 Python
香港唯港荟酒店预订:Hotel ICON
2018/03/27 全球购物
比利时家具购买网站:Home24
2019/01/03 全球购物
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
基层干部十八大感言
2014/01/19 职场文书
保密工作责任书
2014/04/16 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
地雷战观后感
2015/06/09 职场文书
Spring Boot 启动、停止、重启、状态脚本
2021/06/26 Java/Android
Python绘制散乱的点构成的图的方法
2022/04/21 Python
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript