接下来我们写一个类,仿照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")