Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2887082
  • 博文数量: 348
  • 博客积分: 2907
  • 博客等级: 中校
  • 技术积分: 2272
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-12 09:16
个人简介

专注 K8S研究

文章分类

全部博文(348)

文章存档

2019年(22)

2018年(57)

2016年(2)

2015年(27)

2014年(33)

2013年(190)

2011年(3)

2010年(14)

分类: Python/Ruby

2013-06-29 23:04:42

Python生成目录树

 

部分来自:

 

脚本思路:通过os.listdir()列举出目录下所有的文件和子目录,如果是文件则打印输出,如果是子目录,则递归获取该子目录的文件信息。

脚本:

#!/usr/bin/env python

#coding=utf-8

 

import os 

import sys

 

class dir(object):  

    def __init__(self):  

        self.SPACE = ""  

        self.list = [] 

        self.size = 0

    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  

            try:

                self.size += os.path.getsize(myfile)  

            except Exception, e:

                pass

            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) + " i--" + 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(sys.argv[1]) # input directory 

    #d.writeList("1.txt") # write to file

    #print '%s' % (''.join(d.list))

    print ''.join(d.list)

    print '%s total size : %d bytes' % (sys.argv[1],  d.size)

 

脚本结果:

|--myconfig

 |--test

 |   i--11df.tt

 i--myconfig.tar0

 

/usr/local/etc/ total size : 14527 bytes

 

阅读(726) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~