第153课时: 递归算法原理 阶乘计算
【示例】使用递归算法遍历目录下所有文件
文件夹结构
初步的代码:
import osdef getfiles(path):childfile=os.listdir(path)for file in childfile:filepath = os.path.join(path,file)if os.path.isdir(filepath):getfiles(filepath)print(filepath)getfiles('dy')
dy\22
dy\haha.py
dy\hahaha.zip
dy\mv\haha.py
dy\mv\wlz.txt
dy\mv
但是我们可以看到,显示不出文件的关系。所以需要改进。
import osdef getfiles(path,level):childfile=os.listdir(path)for file in childfile:filepath = os.path.join(path,file)if os.path.isdir(filepath):getfiles(filepath,level+1)print('\t'*level+filepath)getfiles('dy',0)
dy\22
dy\haha.py
dy\hahaha.zip
dy\mv\haha.py
dy\mv\wlz.txt
dy\mv
这个level 表示缩进的个数, 、t表示一个缩进每深一层level就加1
但是可以看到,上下关系是颠倒的。所以必须再改进
import osallfiles = []
def getfiles(path,level):childfile=os.listdir(path)for file in childfile:filepath = os.path.join(path,file)if os.path.isdir(filepath):getfiles(filepath,level+1)allfiles.append('\t'*level+filepath)getfiles('dy',0)for f in reversed(allfiles):print(f)
dy\mv
dy\mv\wlz.txt
dy\mv\haha.py
dy\hahaha.zip
dy\haha.py
dy\22
把读取出的结果直接放入一个序列中,然后反转序列,直接挨个打印:
reversed(allfiles)