Python实现 Linux tree命令:用树形结构显示目录结构
我的图书馆
Python实现 Linux tree命令:用树形结构显示目录结构
在网上看了一篇&Linux tree命令的Python实现,刚好也这个需求,遂下来自己改了一改,满足自己的需求,先把源码分享给大家:
#!/usr/bin/python &&
import&os,&sys,&string&&
class&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,&op):&&
&&&&&&&&list&=&self.getList(dir,&0,&op)&&
&&&&&&&&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,&op):&&
&&&&&&&&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,&op)&&
&&&&&&&&&&&&elif&op&==&'-d':&&
&&&&&&&&&&&&&&&&pass&&
&&&&&&&&&&&&else:&&
&&&&&&&&&&&&&&&&list.append(file)&&
&&&&&&&&return&list&&
if&len(sys.argv)&&&2&:&&
&&&&t&=&XXTree()&&
&&&&t.printHelp(sys.argv[0])&&
&&&&t&=&XXTree()&&
&&&&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)&&
TA的最新馆藏本帖子已过去太久远了,不再提供回复功能。2885人阅读
语言基础(55)
有时我们需要生成目录树结构:
这时需要用到tree命令:
关于tree命令的一些参数:
常见的用法:
tree -a 显示所有
tree -d 仅显示目录
tree -L n n代表数字..表示要显示几层...
tree -f 显示完整路径..
当然tree支持重定向至文件...
tree -L 4 &dirce.doc即可生成UTF8格式的文档..我们也可以在windows 下查看..
注意:生成的TXT或其他文件在win下面打开时也为乱码...这时我们要选择字符编码为UTF-8..当然..UTF-8是你linux下的默认字符集才可以......
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:935078次
积分:4997
积分:4997
排名:第5274名
原创:62篇
转载:110篇
评论:72条
(1)(3)(1)(1)(5)(3)(1)(2)(3)(6)(10)(6)(2)(1)(4)(2)(3)(1)(5)(4)(9)(2)(1)(5)(1)(3)(4)(2)(2)(1)(4)(11)(9)(10)(5)(2)(34)(4)Linux下的tree命令--Linux下目录树查看
下的tree命令--Linux下目录树查看
有时我们需要生成目录树结构,可以使用的有ls -R,但是实际效果并不好