使用python生成目录树


Posted in Python onMarch 29, 2018

这是一个使用Python生成文件、目录树的程序,其中遇到一个问题是:如何确定某个目录下的某一文件是最后一个遍历的文件。因为最后一个遍历的文件前应添加"└─",非最后一个文件前添加"├─"。看了Python的API文档没有找到相关的系统函数。现在做法是:先统计出某个目录下的文件个数,在遍历目录时,当个数相等时,就可以确定该目录遍历结束。

# encoding: utf-8  
  
import os   
class dir(object):   
  def __init__(self):   
    self.SPACE = ""   
    self.list = []  
    
  def getCount(self, url):  
    files = os.listdir(url)  
    count = 0;  
    for file in files:  
      myfile = url + "//" + file  
      if os.path.isfile(myfile):  
        count = count + 1  
    return count  
  def getDirList(self, url):   
    files = os.listdir(url)   
    fileNum = self.getCount(url)  
    tmpNum = 0  
    for file in files:   
      myfile = url + "//" + file   
      size = os.path.getsize(myfile)   
      if os.path.isfile(myfile):   
        tmpNum = tmpNum +1  
        if (tmpNum != fileNum):  
          self.list.append(str(self.SPACE) + "├─" + file + "/n")  
        else:  
          self.list.append(str(self.SPACE) + "└─" + file + "/n")  
      if os.path.isdir(myfile):   
        self.list.append(str(self.SPACE) + "├─" + file + "/n")   
        # change into sub directory  
        self.SPACE = self.SPACE + "│ "   
        self.getDirList(myfile)   
        # if iterator of sub directory is finished, reduce "│ "   
        self.SPACE = self.SPACE[:-4]   
    return self.list   
  def writeList(self, url):   
    f = open(url, 'w')   
    f.writelines(self.list)   
    print "ok"   
    f.close()   
if __name__ == '__main__':   
  d = dir()   
  d.getDirList("c:/windows") # input directory  
  d.writeList("c:/1.txt") # write to file

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用xauth方式登录饭否网然后发消息
Apr 11 Python
Python实现对excel文件列表值进行统计的方法
Jul 25 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
May 15 Python
如何用Python来搭建一个简单的推荐系统
Aug 07 Python
django 多对多表的创建和插入代码实现
Sep 09 Python
用python拟合等角螺线的实现示例
Dec 27 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
基于python实现操作git过程代码解析
Jul 27 Python
python Matplotlib数据可视化(1):简单入门
Sep 30 Python
关于django python manage.py startapp 应用名出错异常原因解析
Dec 15 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
Feb 22 Python
python实现树形打印目录结构
Mar 29 #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
You might like
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
EXT中xtype的含义分析
2010/01/07 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
2017/03/09 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
关于angular js_$watch监控属性和对象详解
2017/04/24 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
Vue中使用Sortable的示例代码
2018/04/07 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
2018/11/14 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
[02:46]完美世界DOTA2联赛PWL DAY4集锦
2020/11/03 DOTA
python自定义解析简单xml格式文件的方法
2015/05/11 Python
python中的格式化输出用法总结
2016/07/28 Python
Python打包可执行文件的方法详解
2016/09/19 Python
Python 编码规范(Google Python Style Guide)
2018/05/05 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
餐饮部总监岗位职责范文
2014/02/13 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL
详解Redis在SpringBoot工程中的综合应用
2021/10/16 Redis
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript