基于Python3的数据结构与算法 - 17 树的实例:模拟文件系统

接下来我们写一个类,仿照Linux系统,自定义一个文件系统:

示例代码如下所示:

class Node:  # (树是由一堆节点组成的,所以先写节点)
    def __init__(self, name, type = 'dir'):
        self.name = name   # (文件/文件夹)
        self.type = type   # (文件/文件夹)  默认为文件
        self.children = []  # 下一级可能有很多元素
        self.parent = None  # 上一级只有一个
        # 链式存储

    def __repr__(self):
        return self.name

# Linux下根目录结构为 /var/www
class FileSystemTree:
    def __init__(self):
        self.root = Node('/')  # 创建根节点
        self.now = self.root  # 刚开始节点为根节点

    def madir(self, name):  # 当前目录下创造一个目录
        # name以 / 结尾
        if name[-1] != '/': # 如果不是以斜杠结尾,加上斜杠
            name += "/"
        node = Node(name)   # 创建的一个根目录下的目录
        self.now.children.append(node)
        node.parent = self.now

    def ls(self):  # 展示当前目录下的所有目录
        return self.now.children

    def cd(self,name):  # 切换目录
        if name[-1] != '/': # 如果不是以斜杠结尾,加上斜杠
            name += "/"
        if name == "../" :  # 返回上一级
            self.now = self.now.parent
            return
        for child in self.now.children:
            if child.name == name:
                self.now = child
                return
        raise ValueError("invalid dir")

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一道秘制的小菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值