随笔 - 87  文章 - 279  trackbacks - 0
<2024年12月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

潜心看书研究!

常用链接

留言簿(19)

随笔分类(81)

文章分类(89)

相册

ACM OJ

My friends

搜索

  •  

积分与排名

  • 积分 - 214752
  • 排名 - 116

最新评论

阅读排行榜

评论排行榜

弱弱的写了一下,可以自用-_-
  1 #!/usr/bin/env python
  2 
  3 import os
  4 import os.path
  5 import re
  6 import sys
  7 
  8 re_sp = re.compile("/")
  9 max_level = 0x7FFFFFFF
 10 
 11 
 12 def get_dirname(path) :
 13     """
 14     get the dirname by a path
 15     """
 16     global re_sp
 17 
 18     path = os.path.realpath(path)
 19     lst_ret = re_sp.split(path)
 20     if 0 == len(lst_ret) :
 21         return ""
 22     return lst_ret[len(lst_ret)-1]
 23 
 24 
 25 def get_startmark(path, lvl) :
 26     """
 27     get the startmark which will be displayed first
 28     """
 29     global max_level
 30 
 31     new_str = ""
 32     for i in range(lvl) :
 33         new_str += '|'
 34 
 35     if True == os.path.isdir(path) :
 36         if len(os.listdir(path)) > 0 and lvl == max_level:
 37             new_str += "+"
 38         else :
 39             new_str += "-"
 40         for i in range(lvl) :
 41             new_str += ' '
 42     else :
 43         new_str += '|'
 44         for i in range(lvl) :
 45             new_str += ' '
 46     
 47     return new_str
 48 
 49 
 50 def dfs_dir(path, lvl) :
 51     """
 52     deep first search the path
 53     """
 54     global max_level
 55 
 56     new_str = get_startmark(path, lvl)
 57     print "%s%s" % (new_str, get_dirname(path)),
 58 
 59     #check file type
 60     if True == os.path.islink(path) :
 61         print "%s" % "[L]",
 62     if True == os.path.ismount(path) :
 63         print "%s" % "[M]",
 64     if False == os.path.isdir(path) :
 65         print "[%d]" % os.path.getsize(path)    
 66     else :
 67         print ""
 68 
 69     if False == os.path.isdir(path) :
 70         return
 71 
 72     if lvl == max_level :
 73         return
 74 
 75     files = os.listdir(path)
 76     for each_file in files :
 77         new_path = "%s/%s" % (path, each_file)
 78         dfs_dir(new_path, lvl+1)
 79 
 80 
 81 def pytree() :
 82     """
 83     the main function to run
 84     """
 85     global max_level
 86 
 87     argvs = sys.argv
 88     
 89     if 0 == len(argvs) % 2 :
 90         print "Argvs invalid!"
 91         sys.exit(-1)
 92     else :
 93         cur_path = ""
 94 
 95         for tmp_str in argvs :
 96             if tmp_str.startswith("-") :
 97                 if "-i" == tmp_str :
 98                     idx = argvs.index(tmp_str)
 99                     max_level = int(argvs[idx+1])
100                 if "-p" == tmp_str:
101                     idx = argvs.index(tmp_str)
102                     cur_path = os.path.realpath(argvs[idx+1])
103 
104         if "" == cur_path :
105             cur_path = os.getcwd()
106 
107         if False == os.path.isdir(cur_path) :
108             print "Argvs invalid : path not exits!"
109         else :
110             print "List Dir : %s" % cur_path
111             dfs_dir(cur_path, 0)
112 
113     
114 
115 
116 if __name__ == "__main__" :
117     pytree()
118 


posted on 2009-03-29 19:56 阅读(267) 评论(0)  编辑 收藏 引用 所属分类: Python

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理