Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2422591
  • 博文数量: 298
  • 博客积分: 7876
  • 博客等级: 准将
  • 技术积分: 5500
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-23 13:39
文章存档

2013年(2)

2012年(142)

2011年(154)

分类: Python/Ruby

2012-03-15 19:46:35

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

 

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