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())