[数据结构] python 树的实例:模拟文件系统

这篇博客通过Python模拟了文件系统,包括创建目录、查看当前目录下的子目录及切换目录等功能。以'/bin/python'为例,介绍了如何处理路径,并提供了简化的代码实现。作者指出,这只是对文件系统模拟的初步探索,还有更多深入的知识待挖掘。

思路:

1. 假设文件路径为:/bin/python,文件第一个路径一定是根目录 ‘/’

下面将以添加目录、查看当前目录下的所有目录、切换目录三个功能来简单到不能再简单的模拟文件系统;

2. 创建目录:传进来的目录名必须以‘/’结尾,连接目录和下一级目录

3. 查看当前目录下的所有目录:就是查看当前目录的所有下一级目录

4. 切换目录:遍历根目录的下一级目录,找到就切换

代码:

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

class FileSystemtree:
    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
        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')


tree=FileSystemtree()
tree.mkdir('var/')
tree.mkdir('bin/')
tree.mkdir('usr/')
print(tree.ls())

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

输出为:

[var/, bin/, usr/]
[python/]

总结:文件模拟系统优化的地方还有很多,这次的学习笔记仅仅只是冰山一角,往后更深层次的知识还要继续挖掘。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值