分享

Python实现 Linux tree命令:用树形结构显示目录结构

 看风景D人 2014-01-23

在网上看了一篇 Linux tree命令的Python实现,刚好也这个需求,遂下来自己改了一改,满足自己的需求,先把源码分享给大家:

  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.   
  13.     def getTree(self, dir, op):  
  14.         list = self.getList(dir, 0, op)  
  15.         treelist = []  
  16.           
  17.         for i in range(0, len(list)):  
  18.             fullpath = list[i]  
  19.             parpath = os.path.dirname(list[i])  
  20.             filename = os.path.basename(list[i])  
  21.             if(fullpath == dir):   
  22.                 treelist.append(fullpath)  
  23.                 continue  
  24.                   
  25.             path = fullpath.replace(dir, "")  
  26.             names = path.split("/")  
  27.             name = "`---" + names[len(names) - 1]  
  28.             for j in range(1, len(names) - 1):  
  29.                 name = "    " + name  
  30.             treelist.append(name)  
  31.               
  32.             pos = name.index("`")  
  33.             j = i - 1  
  34.             while j > 0:  
  35.                 name = treelist[j]  
  36.                 if(name[pos] == '`' or name[pos] == ' '):  
  37.                     name = name[0: pos] + "|" + name[pos + 1: len(name)]  
  38.                     treelist[j] = name  
  39.                 else:  
  40.                     break  
  41.                 j = j - 1  
  42.           
  43.         for i in range(0, len(treelist)):  
  44.             print treelist[i]  
  45.           
  46.     def getList(self, dir, layer, op):  
  47.         list = []  
  48.         if layer == 0: list.append(dir)  
  49.         files = os.listdir(dir)  
  50.         for file in files:  
  51.             file = os.path.join(dir, file)  
  52.             if os.path.isdir(file):  
  53.                 list.append(file)  
  54.                 list += self.getList(file, layer + 1, op)  
  55.             elif op == '-d':  
  56.                 pass  
  57.             else:  
  58.                 list.append(file)  
  59.         return list  
  60.   
  61. if len(sys.argv) < 2 :  
  62.     t = XXTree()  
  63.     t.printHelp(sys.argv[0])  
  64. else:  
  65.     t = XXTree()  
  66.   
  67.     dir = None  
  68.     if len(sys.argv) == 2:  
  69.         dir = sys.argv[1]  
  70.   
  71.     op = None  
  72.     if len(sys.argv) == 3:  
  73.         op = sys.argv[1]  
  74.         dir = sys.argv[2]  
  75.   
  76.     t.getTree(dir, op)  


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多