Python树形打印目录结构
2017-09-07 20:59
225 查看
前言
这两天整理数据文件的时候发现,一层层的点击文件夹查看很繁琐,于是想写一个工具来递归打印出文件目录的树形结构,网上找了一些资料几乎都是使用的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学习笔记(2)——遍历目录结构并打印
- 打印一个目录,并以树形结构显示
- Python实现 Linux tree命令:用树形结构显示目录结构
- Java基础之IO流,使用File类以树形结构打印指定文件目录
- Hibernate辅助实现系统目录的树形结构的打印
- Python显示目录的树形结构
- 【IO面试题】打印目录树形结构,并输出到file.txt中
- Python 在当前目录以及其子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- 使用递归打印出一个文件夹下所有子孙文件的树形结构
- intellij 创建maven项目的树形目录结构
- java遍历给定目录,树形结构输出所有文件,包括子目录中的文件
- python中利用os模块打印任意文件夹里面的文件名字,当前文件夹路径,已经其的目录名字
- python 开发的目录结构
- 递归调用实现目录树形结构
- 在 MAC 中导出文件夹下的文件目录的树形结构
- java分享第七天-03(递归打印文件目录的树状结构)
- 用python+graphviz/networkx画目录结构树状图
- python3中分别用递归,栈,和队列打印出目录中所有文件的绝对路径的三种方法
- python打印列出目录及其子目录里面的内容