Linux用樹形結構顯示目錄結構

weixin_34119545發表於2009-02-23

在有些Linux上自帶了tree命令來一樹狀結構顯示一個目錄,但是在有些linux上沒有自帶這個程式,所以這裡用python寫了一個小程式來實現這個功能,程式碼如下:

#!/usr/bin/python import os, sys, string class XXTree: def __init__(self): pass def printHelp(self, cmd): print 'Please use the following cmd:' print ' ' + cmd + ' dir' print 'e.g.' print ' ' + cmd + ' /home/fkong/tmp' def getTree(self, dir): list = self.getList(dir, 0) treelist = [] for i in range(0, len(list)): fullpath = list[i] parpath = os.path.dirname(list[i]) filename = os.path.basename(list[i]) if(fullpath == dir): treelist.append(fullpath) continue path = fullpath.replace(dir, "") names = path.split("/") name = "`---" + names[len(names) - 1] for j in range(1, len(names) - 1): name = " " + name treelist.append(name) pos = name.index("`") j = i - 1 while j > 0: name = treelist[j] if(name[pos] == '`' or name[pos] == ' '): name = name[0: pos] + "|" + name[pos + 1: len(name)] treelist[j] = name else: break j = j - 1 for i in range(0, len(treelist)): print treelist[i] def getList(self, dir, layer): list = [] if layer == 0: list.append(dir) files = os.listdir(dir) for file in files: file = os.path.join(dir, file) if os.path.isdir(file): list.append(file) list += self.getList(file, layer + 1) else : list.append(file) return list if len(sys.argv) != 2: t = XXTree() t.printHelp(sys.argv[0]) else: t = XXTree() dir = sys.argv[1] t.getTree(dir)  

執行效果如下:

 

$ ./xxtree.py  /home/fkong/workspace/jutility/.svn

/home/fkong/workspace/jutility/.svn

|---format

|---props

|---entries

|---prop-base

|---text-base

|---tmp

|   |---prop-base

|   |---props

|   `---text-base

`---all-wcprops

 

相關文章