实现Linux下Tree命令

OS模块及递归实现Tree命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import os
#递归遍历一个指定目录下的所有文件和文件夹。
def getdir(path,level=0):
if path=='':
path = os.getcwd()#获取当前的工作目录
level+=4
num = level // 4
abs_path = os.path.abspath(path)
for name in os.listdir(path):#返回的是一个列表
format_str = ''
if os.path.isfile(os.path.join(abs_path,name)):
for var in range(num):#range函数用来控制循环次数
format_str += '_' * 4 + '▕'
format_str = format_str[0:-1]
format_str += name
mystr = format_str.replace('_',' ',level-4)#替换掉level-4个_
else:
for var in range(num):#range函数用来控制循环次数
format_str += '_' * 4 + '▕'
#在输出前构造出对应的格式
#我们通过递归的次数来重复输出 ----|
format_str += name#----|----|拼接路径
# |____|file
# ____|____|____|____|file
mystr = format_str.replace('_',' ',level-4)#替换掉level-4个_
print(mystr)#输出格式字符串
name = os.path.join(abs_path,name)
if os.path.isdir(name):#绝对路径,判断是否是文件夹
getdir(name,level)
path = input('请输入你要遍历的目录:')
getdir(path)

看看效果
Tree命令演示

思考:如果你已经明白了Tree命令的实现套路,那么试试来实现一下find命令吧!
温馨提示:如果你对该段代码难以理解,先别问我;再去好好看看递归,哈哈哈哈哈


转载请注明原文地址

您的支持将被用作发行更高质量原创技术!