ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 像linux的tree命令一样的目录树打印程序

像linux的tree命令一样的目录树打印程序

原创 Linux操作系统 作者:xjjun 时间:2010-07-05 22:06:49 0 删除 编辑
#! /usr/bin/env python
#coding=utf-8
import os, sys
import fnmatch

space = 4
stack = {0:''}

def path_line(level, path, is_dir, is_last):
    s = []
    leading = stack[level-1]

    if is_dir:
        path = path+'/'

    if is_last:
        s.append(leading + '`-- ' + path)
        leading += '    '
    else:
        s.append(leading + '|-- ' + path)
        leading += '|   '

    stack[level] = leading

    return ''.join(s)

def walk(dir, level=1, skips=['.svn', '*.pyc']):
    r = []
    dirs = [x for x in os.listdir(dir) if not any([fnmatch.fnmatch(x, y) for y in skips])]
    num = len(dirs)
    for i, path in enumerate(sorted(dirs, cmp=lambda x,y: cmp(x.lower(), y.lower()))):
        p = os.path.join(dir, path)
        flag = os.path.isdir(p)
        r.append(path_line(level, path, flag, i==num-1))
        if flag:
            r.extend(walk(p, level+1, skips=skips))

    return r

if __name__ == '__main__':
    if len(sys.argv) == 1:
        path = '.'
    else:
        path = sys.argv[1]
    print path
    print '\n'.join(walk(path))

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23543011/viewspace-667262/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 调皮的小宝宝
请登录后发表评论 登录
全部评论

注册时间:2010-04-19

  • 博文量
    207
  • 访问量
    148941