用Python实现Linux tree命令
2015-06-11 16:38
435 查看
早就耳闻python 功能强大,互联网领域运用广泛,Scrapy爬虫框架、OpenStack云存储架构都是用Python实现的。最近下定决心,开始学习Python。先参考网上的demo写一个小例子,实现linux tree命令。
运行结果
#!/usr/bin/python import os, sys, string class XXXTree: def __init__(self): pass def printHelp(self, cmd): print "Please use the follow cmd" print " " + cmd + 'dir' print "e.g" print " " + cmd + "/root/Kedacom_src" def getTree(self, dir, op): list = self.getList(dir, 0, op) treeList = [] #遍历文件列表,进行格式化输出处理,将处理后的元素添加到treeList中 for i in range(1, len(list)): fullpath = list[i] filename = os.path.basename(fullpath) if(fullpath == dir): treeList.append(fullpath) continue path = fullpath.replace(dir, "") names = path.split('/') name = "|-- " + names[len(names)-1] for tmp in range(1, len(names)-1): name = " " + name treeList.append(name) pos = name.find('&') if (pos >= 0): j = i-1 if j >= 0: name = treeList[j] if (name[pos] == '&'): tmp = name.index('|') name = name[0:tmp] + "`" + name[tmp+1:pos] treeList[j] = name for i in range(0, len(treeList)): print treeList[i] #递归获取目录下所有的文件,除去隐形文件 def getList(self, dir, layer, op): list = [ ] if (layer == 0):list.append(dir) #对目录下的文件列表进行排序 files = sorted(os.listdir(dir)) for file in files: if (file[0] == '.'): continue file = os.path.join(dir, file) if os.path.isdir(file): list.append(file) list += self.getList(file, layer+1, op) elif (op == '-d'): pass else: list.append(file) newfile = file + '&' pos = list.index(file) list[pos] = newfile return list if (len(sys.argv) < 2): t = XXXTree() t.printHelp(sys.argv[0]) else: t = XXXTree() dir = None if (len(sys.argv) == 2):dir = sys.argv[1] op = None if (len(sys.argv) == 3): op = sys.argv[1] dir = sys.argv[2] t.getTree(dir, op)
运行结果
相关文章推荐
- linux 安装中文支持包及中文字符集配置
- 深入理解linux内核读书笔记(第九章)
- Linux系统里如何彻底的清空终端屏幕
- Linux 本地yum源的配置
- linux文本文件乱码
- 清除Linux终端命令的历史记录
- Linux学习笔记
- Linux C 编程内存泄露检测工具:memwatch
- Linux压缩解压命令大全
- CentOS7.0最小化安装后没有桌面的解决方法(手动安装图形桌面)
- Linux使用 tar命令-g参数进行增量+差异备份、还原文件
- Linux使用 tar命令-g参数进行增量+差异备份、还原文件
- linux下安装配置cacti监控
- linux下安装配置cacti监控
- linux命令:ls命令
- linux命令:cd命令
- Linux-df与du不一致情况分析【重点】
- jenkins安装
- CentOS7/RHEL7上安装KVM(QEMU)
- linux命令之:mkdir命令