如何不导入外部模块实现带缩进递归打印自定义目录结构?
递归打印自定义目录结构实现方案
核心实现逻辑
- 递归函数新增
indent_level参数记录当前层级,默认值为0,每进入一层子目录该参数+1 - 用
" " * indent_level生成对应层级的缩进字符串 - 打印时区分目录和普通文件,目录遍历其
contents属性递归打印子项
实现代码
def print_directory(node, indent_level=0): indent = " " * indent_level # 处理目录类型 if isinstance(node, Directory): print(f"{indent}{node.name}/") # 递归打印目录下所有子项 for item in node.contents: print_directory(item, indent_level + 1) # 处理普通文件类型 elif isinstance(node, PlainFile): print(f"{indent}{node.name}")
调用方式
直接传入根目录实例即可:
print_directory(root)
输出效果
root/ boot.exe home/ Julius/ dog.jpg homework.txt Cameron/ Elephant.jpg
额外优化提示
你现有代码的File类__init__方法中用了可变对象contents = []作为默认参数,这是Python常见的使用坑点:可变默认参数会在所有类实例之间共享,可能导致非预期的内容污染。建议修改为:
class File: def __init__(self, name, contents = None, owner = "No owner currently defined"): self.name = name self.contents = contents if contents is not None else [] self.owner = owner
内容的提问来源于stack exchange,提问作者BanAckerman
相关产品推荐
相关产品推荐

