0
点赞
收藏
分享

微信扫一扫

2.9_tree_树

_铁马冰河_ 2022-02-12 阅读 42
class Node(object):

    def __init__(self, name, type='dir'):
        self.name = name
        self.type = type
        self.children = []
        self.parent = Node
        # 链式存储

    def __repr__(self):
        return self.name


n = Node('hello')
n2 = Node('world')
n.children.append(n2)
n2.parent = n

 

class FileSystemTree(object):
    """文件系统"""

    def __init__(self):
        self.root = Node('/')
        self.now = self.root

    def mkdir(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):
        # '/var/python'

        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!')


tree = FileSystemTree()
tree.mkdir('var')
tree.mkdir('bin/')
tree.mkdir('usr/')

tree.cd('bin/')
tree.mkdir('python/')

tree.cd('../')

print(tree.ls())

 

举报

相关推荐

0 条评论