废话不多说,直接上代码
import os # 第一种方式 def recu_list_dirs_by_dictionary_order(path, indent = 0, maxi = -1): ''' 按字典顺序递归输出目录结构 :param path: str 文件路径 :param indent: int 首次缩进空格(默认为 0 ,一般不用改变) :param maxi: int 最大展开层数(默认为 -1,表示全部展开) ''' if maxi != 0: try: lsdir = os.listdir(path) except PermissionError: # 对于权限不够的文件不作处理 pass else: for item in lsdir: full_path = os.path.join(path, item) if os.path.isdir(full_path): print(' ' * indent, '+', item) recu_list_dirs_by_dictionary_order(full_path, indent + 4, maxi - 1) if os.path.isfile(full_path): print(' ' * indent, '-', item) # 第二种方式 def recu_list_dirs_by_file_type(path, indent = 0, maxi = -1): ''' 按文件类型递归输出目录结构 :param path: str 文件路径 :param indent: int 首次缩进空格(默认为 0 ,一般不用改变) :param maxi: int 最大展开层数(默认为 -1,表示全部展开) ''' if maxi != 0: try: lsdir = os.listdir(path) except PermissionError: # 对于权限不够的文件不作处理 pass else: dirs = [item for item in lsdir if os.path.isdir(os.path.join(path, item))] files = [item for item in lsdir if os.path.isfile(os.path.join(path, item))] for item in dirs: print(' ' * indent, '+', item) recu_list_dirs_by_file_type(os.path.join(path, item), indent + 4, maxi - 1) for item in files: print(' ' * indent, '-', item) if __name__ == '__main__': file_path = input('请输入路径:') print('\n---按字典序递归输出目录结构---') recu_list_dirs_by_dictionary_order(file_path, 0, 2) print('\n---按文件类型递归输出目录结构---') recu_list_dirs_by_file_type(file_path, 0, 2)
效果如下
请输入路径:E:\Blog\source ---按字典序递归输出目录结构--- + about + index - index.md + archives + index - index.md + categories + index - index.md + images - avatar.jpg + tags + index - index.md + _data - next.yml - variables.styl + _posts - Linux学习笔记(一) 文件系统.md - Linux学习笔记(七) 查询系统.md - Linux学习笔记(三) 文件权限.md - Linux学习笔记(二) 文件管理.md - Linux学习笔记(五) 账号管理.md - Linux学习笔记(六) 进程管理.md - Linux学习笔记(四) vi 编辑器.md - Linux实战笔记(一) curl.md - Linux实战笔记(二) awk.md - Python学习笔记(一) 列表.md - Python学习笔记(七) 异常处理.md - Python学习笔记(三) 字典.md + Python学习笔记(九) map、zip、filter、reduce - Python学习笔记(九) map、zip、filter、reduce.md - Python学习笔记(二) 字符串.md - Python学习笔记(五) 类与对象.md - Python学习笔记(八) 文件处理.md - Python学习笔记(六) 模块与包.md - Python学习笔记(十) 迭代器、生成器、装饰器.md + Python学习笔记(四) 函数 - Python学习笔记(四) 函数.md ---按文件类型递归输出目录结构--- + about + index - index.md + archives + index - index.md + categories + index - index.md + images - avatar.jpg + tags + index - index.md + _data - next.yml - variables.styl + _posts + Python学习笔记(九) map、zip、filter、reduce + Python学习笔记(四) 函数 - Linux学习笔记(一) 文件系统.md - Linux学习笔记(七) 查询系统.md - Linux学习笔记(三) 文件权限.md - Linux学习笔记(二) 文件管理.md - Linux学习笔记(五) 账号管理.md - Linux学习笔记(六) 进程管理.md - Linux学习笔记(四) vi 编辑器.md - Linux实战笔记(一) curl.md - Linux实战笔记(二) awk.md - Python学习笔记(一) 列表.md - Python学习笔记(七) 异常处理.md - Python学习笔记(三) 字典.md - Python学习笔记(九) map、zip、filter、reduce.md - Python学习笔记(二) 字符串.md - Python学习笔记(五) 类与对象.md - Python学习笔记(八) 文件处理.md - Python学习笔记(六) 模块与包.md - Python学习笔记(十) 迭代器、生成器、装饰器.md - Python学习笔记(四) 函数.md
文章知识点与官方知识档案匹配,可进一步学习相关知识