生成文件夹树状图
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 | import os import os.path BRANCH = '├─' LAST_BRANCH = '└─' TAB = '│ ' EMPTY_TAB = ' ' def get_dir_list(path, placeholder = ''): folder_list = [folder for folder in os.listdir(path) if os.path.isdir(os.path.join(path, folder))] file_list = [ file for file in os.listdir(path) if os.path.isfile(os.path.join(path, file ))] result = '' for folder in folder_list[: - 1 ]: result + = placeholder + BRANCH + folder + '\n' result + = get_dir_list(os.path.join(path, folder), placeholder + TAB) if folder_list: result + = placeholder + (BRANCH if file_list else LAST_BRANCH) + folder_list[ - 1 ] + '\n' result + = get_dir_list(os.path.join(path, folder_list[ - 1 ]), placeholder + (TAB if file_list else EMPTY_TAB)) for file in file_list[: - 1 ]: result + = placeholder + BRANCH + file + '\n' if file_list: result + = placeholder + LAST_BRANCH + file_list[ - 1 ] + '\n' return result if __name__ = = '__main__' : print (os.path.dirname(os.getcwd())) print (get_dir_list(os.path.dirname(os.getcwd()))) |
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | # -*- coding: utf-8 -*- import sys from pathlib import Path class DirectionTree( object ): """生成目录树 @ pathname: 目标目录 @ filename: 要保存成文件的名称 """ def __init__( self , pathname = '.' , filename = 'tree.txt' ): super (DirectionTree, self ).__init__() self .pathname = Path(pathname) self .filename = filename self .tree = '' def set_path( self , pathname): self .pathname = Path(pathname) def set_filename( self , filename): self .filename = filename def generate_tree( self , n = 0 ): if self .pathname.is_file(): self .tree + = ' |' * n + '-' * 4 + self .pathname.name + '\n' elif self .pathname.is_dir(): self .tree + = ' |' * n + '-' * 4 + \ str ( self .pathname.relative_to( self .pathname.parent)) + '\\' + ' \n' for cp in self .pathname.iterdir(): self .pathname = Path(cp) self .generate_tree(n + 1 ) def save_file( self ): with open ( self .filename, 'w' , encoding = 'utf-8' ) as f: f.write( self .tree) if __name__ = = '__main__' : dirtree = DirectionTree() # 命令参数个数为1,生成当前目录的目录树 if len (sys.argv) = = 1 : dirtree.set_path(Path.cwd()) dirtree.generate_tree() print (dirtree.tree) # 命令参数个数为2并且目录存在存在 elif len (sys.argv) = = 2 and Path(sys.argv[ 1 ]).exists(): dirtree.set_path(sys.argv[ 1 ]) dirtree.generate_tree() print (dirtree.tree) # 命令参数个数为3并且目录存在存在 elif len (sys.argv) = = 3 and Path(sys.argv[ 1 ]).exists(): dirtree.set_path(sys.argv[ 1 ]) dirtree.generate_tree() dirtree.set_filename(sys.argv[ 2 ]) dirtree.save_file() else : # 参数个数太多,无法解析 print ( '命令行参数太多,请检查!' ) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用