主页 > IT业界  > 

python树状打印项目路径

python树状打印项目路径

学习这个的需求来自于,我想把项目架构告诉gpt问问它,然后不太会打印项目架构😂 联想到Linux的tree指令

import os class DirectoryTree: def __init__(self, path): self.path = path def print_tree(self, method='default'): if method == 'default': self._print_dir_tree(self.path) elif method == 'with_count': self._print_dir_tree_with_count(self.path) elif method == 'files_only': self._print_files_only(self.path) elif method == 'with_symbols': self._print_dir_tree_with_symbols(self.path) else: print("Invalid method!") def _print_dir_tree(self, path, indent=0): print(' ' * indent + '|---' + os.path.basename(path)) for item in os.listdir(path): itempath = os.path.join(path, item) if os.path.isdir(itempath): self._print_dir_tree(itempath, indent + 2) else: print(' ' * (indent + 2) + '|---' + item) def _print_dir_tree_with_count(self, path, indent=0): print(' ' * indent + '|---' + os.path.basename(path), end=' ') items = os.listdir(path) dirs = sum(1 for item in items if os.path.isdir( os.path.join(path, item))) files = len(items) - dirs print(f"(dirs: {dirs}, files: {files})") for item in items: itempath = os.path.join(path, item) if os.path.isdir(itempath): self._print_dir_tree_with_count(itempath, indent + 2) else: print(' ' * (indent + 2) + '|---' + item) def _print_files_only(self, path, indent=0): for item in os.listdir(path): itempath = os.path.join(path, item) if os.path.isdir(itempath): self._print_files_only(itempath, indent) else: print(' ' * indent + '|---' + item) def _print_dir_tree_with_symbols(self, path, indent=0): print(' ' * indent + '📁 ' + os.path.basename(path)) for item in os.listdir(path): itempath = os.path.join(path, item) if os.path.isdir(itempath): self._print_dir_tree_with_symbols(itempath, indent + 2) else: print(' ' * indent + '📄 ' + item) class EnhancedDirectoryTree: def __init__(self, path): self.path = path self.show_hidden = False self.depth_limit = None self.show_files = True self.show_dirs = True def display_settings(self, show_hidden=False, depth_limit=None, show_files=True, show_dirs=True): self.show_hidden = show_hidden self.depth_limit = depth_limit self.show_files = show_files self.show_dirs = show_dirs def print_tree(self): self._print_dir(self.path) def _print_dir(self, path, indent=0, depth=0): if self.depth_limit is not None and depth > self.depth_limit: return if self.show_dirs: print(' ' * indent + '📁 ' + os.path.basename(path)) for item in sorted(os.listdir(path)): # Check for hidden files/folders if not self.show_hidden and item.startswith('.'): continue itempath = os.path.join(path, item) if os.path.isdir(itempath): self._print_dir(itempath, indent + 2, depth + 1) else: if self.show_files: print(' ' * indent + '📄 ' + item) # 创建类的实例 tree = DirectoryTree(os.getcwd()) # 使用默认方法打印 print("Default:") tree.print_tree() # 使用带计数的方法打印 print("\nWith Count:") tree.print_tree(method='with_count') # 使用只打印文件的方法 print("\nFiles Only:") tree.print_tree(method='files_only') # 使用emoji print("\nWith Symbols:") tree.print_tree(method='with_symbols') print('================================================================') enhancedtree = EnhancedDirectoryTree(os.getcwd()) # Default print enhancedtree.print_tree() print("\n---\n") # Configure settings to show hidden files, but only up to depth 2 and only directories enhancedtree.display_settings(show_hidden=True, depth_limit=2, show_files=False) enhancedtree.print_tree() print("\n---\n") # Configure settings to show only files up to depth 1 enhancedtree.display_settings(show_files=True, show_dirs=False, depth_limit=1) enhancedtree.print_tree()

os.getcwd(): 返回当前工作目录的路径名。

os.path.basename(path): 返回路径名 path 的基本名称,即去掉路径中的目录部分,只保留文件或目录的名称部分。

os.listdir(path): 返回指定路径 path 下的所有文件和目录的名称列表。

os.path.isdir(path): 判断路径 path 是否为一个目录,如果是则返回 True,否则返回 False。

os.path.join(path, *paths): 将多个路径组合成一个完整的路径名。这个函数会自动根据操作系统的不同使用不同的路径分隔符。

上面两个类里面的函数其实就是用到递归,第二个类的那个函数可以设置递归深度

标签:

python树状打印项目路径由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“python树状打印项目路径