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实现得到一个给定类的虚函数
Sep 28 Python
Python实现的使用telnet登陆聊天室实例
Jun 17 Python
Python内置模块turtle绘图详解
Dec 09 Python
Python对数据进行插值和下采样的方法
Jul 03 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
对python 多个分隔符split 的实例详解
Dec 20 Python
Python及Pycharm安装方法图文教程
Aug 05 Python
python多环境切换及pyenv使用过程详解
Sep 27 Python
python读取当前目录下的CSV文件数据
Mar 11 Python
pycharm全局搜索的具体步骤
Jul 28 Python
Python实现LR1文法的完整实例代码
Oct 25 Python
Django中template for如何使用方法
Jan 31 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闭包定义与使用简单示例
2018/04/13 PHP
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
JavaScript中的数组操作介绍
2014/12/30 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
express.js中间件说明详解
2019/03/19 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
python缩进区别分析
2014/02/15 Python
Python闭包实现计数器的方法
2015/05/05 Python
Python 内置函数memoryview(obj)的具体用法
2017/11/23 Python
python调用百度API实现人脸识别
2020/11/17 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
护理实习自我鉴定
2013/12/14 职场文书
实习生求职自荐信
2014/02/07 职场文书
活动策划求职信模板
2014/04/21 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
2015年秋季运动会广播稿
2015/08/19 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
浅谈redis缓存在项目中的使用
2021/05/20 Redis
Go语言并发编程 sync.Once
2021/10/16 Golang
设置IIS Express并发数
2022/07/07 Servers