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动态监控日志内容的示例
Feb 16 Python
用Python解析XML的几种常见方法的介绍
Apr 09 Python
Python选课系统开发程序
Sep 02 Python
简单实现python数独游戏
Mar 30 Python
通过Pandas读取大文件的实例
Jun 07 Python
Python简单计算给定某一年的某一天是星期几示例
Jun 27 Python
解决pycharm运行时interpreter为空的问题
Oct 29 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
Pycharm以root权限运行脚本的方法
Jan 19 Python
Python语言检测模块langid和langdetect的使用实例
Feb 19 Python
解决keras模型保存h5文件提示无此目录问题
Jul 01 Python
利用Python多线程实现图片下载器
Mar 25 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+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
浅谈PHP进程管理
2019/03/08 PHP
做网页的一些技巧
2007/02/01 Javascript
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
jQuery 过滤not()与filter()实例代码
2012/05/10 Javascript
js函数的引用, 关于内存的开销
2012/09/17 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
JS hashMap实例详解
2016/05/26 Javascript
使用socket.io实现简单聊天室案例
2018/01/02 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
Python中请不要再用re.compile了
2019/06/30 Python
react+django清除浏览器缓存的几种方法小结
2019/07/17 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
Python代码注释规范代码实例解析
2020/08/14 Python
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
银行个人求职自荐信范文
2013/12/16 职场文书
服装促销活动方案
2014/02/23 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
MySQL七种JOIN类型小结
2021/10/24 MySQL
python井字棋游戏实现人机对战
2022/04/28 Python