您的位置:首页 > 编程语言 > Python开发

python 生成目录树及显示文件大小的代码

2013-03-09 23:15 791 查看


python 生成目录树及显示文件大小的代码

发布:dxy 字体:[增加 减小] 类型:转载

没啥技术含量,大家都说没用,只不过算法还有点意思。自己憋出来的,不知道是不是跟别人的一样。做递归得到子文件夹以及文件并不难,但是能够打印出树形,层次关系展示出来,有些难度。

比如

1--1

2--1

2

3--1

2

3

3--1

2

3

交错的层级关系,刚开始感觉很乱没有想明白,后来终于抓住了关键。只要算出每个层次的深度,就好办了。

我定义了一个rank,进入一个子文件夹时,让rank+1,遍历完子文件夹rank就-1。

如图充分说明了递归、遍历的顺序以及rank值变化:(丑了点。。。)



下面放代码:

复制代码代码如下:

'''

Created on Jul 22, 2009

@author: dirful

'''

import os

class dir(object):

def __init__(self):

self.CONST =0

self.SPACE =""

self.list =[]

def p(self,url):

files = os.listdir(r''+url)

for file in files:

myfile = url + "\\"+file

size = os.path.getsize(myfile)

if os.path.isfile(myfile):

self.list.append(str(self.SPACE)+"|____"+file +" "+ str(size)+"\n")

# print str(self.SPACE)+"|____"+file +" "+ str(size)

if os.path.isdir(myfile) :

self.list.append(str(self.SPACE)+"|____"+file + "\n")

#get into the sub-directory,add "| "

self.SPACE = self.SPACE+"| "

self.p(myfile)

#when sub-directory of iteration is finished,reduce "| "

self.SPACE = self.SPACE[:-5]

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.p("E:/eclipse")

d.writeList("c:3.txt")

生成树如下。没有微软tree生成的好。。。。。。。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: