Linux用树形结构显示目录结构

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

在有些Linux上自带了tree命令来一树状结构显示一个目录,但是在有些linux上没有自带这个程序,所以这里用python写了一个小程序来实现这个功能,代码如下:

[python] view plain copy print ?
  1. #!/usr/bin/python  
  2. import os, sys, string  
  3. class XXTree:  
  4.     def __init__(self):  
  5.         pass  
  6.       
  7.     def printHelp(self, cmd):  
  8.         print 'Please use the following cmd:'  
  9.         print '    ' + cmd + ' dir'  
  10.         print 'e.g.'  
  11.         print '    ' + cmd + ' /home/fkong/tmp'  
  12.     def getTree(self, dir):  
  13.         list = self.getList(dir, 0)  
  14.         treelist = []  
  15.           
  16.         for i in range(0, len(list)):  
  17.             fullpath = list[i]  
  18.             parpath = os.path.dirname(list[i])  
  19.             filename = os.path.basename(list[i])  
  20.             if(fullpath == dir):   
  21.                 treelist.append(fullpath)  
  22.                 continue  
  23.                   
  24.             path = fullpath.replace(dir, "")  
  25.             names = path.split("/")  
  26.             name = "`---" + names[len(names) - 1]  
  27.             for j in range(1, len(names) - 1):  
  28.                 name = "    " + name  
  29.             treelist.append(name)  
  30.               
  31.             pos = name.index("`")  
  32.             j = i - 1  
  33.             while j > 0:  
  34.                 name = treelist[j]  
  35.                 if(name[pos] == '`' or name[pos] == ' '):  
  36.                     name = name[0: pos] + "|" + name[pos + 1: len(name)]  
  37.                     treelist[j] = name  
  38.                 else:  
  39.                     break  
  40.                 j = j - 1  
  41.           
  42.         for i in range(0, len(treelist)):  
  43.             print treelist[i]  
  44.           
  45.     def getList(self, dir, layer):  
  46.         list = []  
  47.         if layer == 0: list.append(dir)  
  48.         files = os.listdir(dir)  
  49.         for file in files:  
  50.             file = os.path.join(dir, file)  
  51.             if os.path.isdir(file):  
  52.                 list.append(file)  
  53.                 list += self.getList(file, layer + 1)  
  54.             else :  
  55.                 list.append(file)  
  56.         return list  
  57. if len(sys.argv) != 2:  
  58.     t = XXTree()  
  59.     t.printHelp(sys.argv[0])  
  60. else:  
  61.     t = XXTree()  
  62.     dir = sys.argv[1]  
  63.     t.getTree(dir)  
#!/usr/bin/pythonimport os, sys, stringclass 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 listif 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

 

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值