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 相关文章推荐
使用Python3中的gettext模块翻译Python源码以支持多语言
Mar 31 Python
Python面向对象编程基础解析(一)
Oct 26 Python
python模拟事件触发机制详解
Jan 19 Python
Python实现JSON反序列化类对象的示例
Jan 31 Python
python3 爬取图片的实例代码
Nov 06 Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 Python
pycharm双击无响应(打不开问题解决办法)
Jan 10 Python
Python实现密钥密码(加解密)实例详解
Apr 26 Python
python 贪心算法的实现
Sep 18 Python
解决python 输出到csv 出现多空行的情况
Mar 24 Python
pytorch常用数据类型所占字节数对照表一览
May 17 Python
python自动计算图像数据集的RGB均值
Jun 18 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
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
PHP中数字检测is_numeric与ctype_digit的区别介绍
2012/10/04 PHP
ThinkPHP模板引擎之导入资源文件方法详解
2014/06/18 PHP
PHP中数据类型转换的三种方式
2015/04/02 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
2018/10/31 PHP
PHP实现微信小程序用户授权的工具类示例
2019/03/05 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
jQuery Validate 验证,校验规则写在控件中的具体实例
2014/02/27 Javascript
nodejs实现bigpipe异步加载页面方案
2016/01/26 NodeJs
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
Nodejs+Socket.io实现通讯实例代码
2017/02/13 NodeJs
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
原生js滑动轮播封装
2020/07/31 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
进一步了解Python中的XML 工具
2015/04/13 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
Gap工厂店:Gap Factory
2017/11/02 全球购物
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
招商业务员岗位职责
2013/12/16 职场文书
法学毕业生自我鉴定
2014/01/31 职场文书
药剂专业毕业生求职信
2014/06/24 职场文书
党员演讲稿
2014/09/04 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
迎国庆主题班会
2015/08/17 职场文书
Django 实现jwt认证的示例
2021/04/30 Python