You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不导入外部模块实现带缩进递归打印自定义目录结构?

递归打印自定义目录结构实现方案

核心实现逻辑

  • 递归函数新增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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:15:03