全部博文(298)
分类: 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