8.算法树的实例之文件模拟系统

# 开发时间: 20:53
class Node:
    def __init__(self,name,type='dir'):   #定义文件夹
        self.name=name
        self.type=type
        self.children=[]
        self.parent=None
    def __repr__(self):                   #为了打印name
        return self.name

class FileSystemTree:
    def __init__(self):
        self.root=Node('/')               #建立跟文件夹
        self.now=self.root                #建立文件夹指针

    def mkdir(self,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')   #抛出文件夹不存在的异常

fi=FileSystemTree()
fi.mkdir('var/')
fi.mkdir('bin/')
fi.mkdir('liu')
fi.cd('bin/')
fi.mkdir('python/')
fi.cd('../')
print(fi.ls())

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值