首页 > 其他分享 >树的实例--模拟文件系统

树的实例--模拟文件系统

时间:2023-08-18 10:48:17浏览次数:34  
标签:__ name -- self tree 文件系统 实例 now def

博客地址:https://www.cnblogs.com/zylyehuo/

# -*- coding: utf-8 -*-

class Node:
    # 链式存储
    def __init__(self, name, type='dir'):
        self.name = name
        self.type = type  # "dir" or "file"
        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.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())

标签:__,name,--,self,tree,文件系统,实例,now,def
From: https://www.cnblogs.com/zylyehuo/p/17639756.html

相关文章

  • 连通分量专题
    图上问题->树上问题->序列问题连通分量专题强连通分量(SCC)对于一个有向图,当其中任意两点都能互相到达时,我们认为这是强联通的intdfn[N],low[N],belong[N],cnt,tot;boolinstack[N];vector<int>scc[N];stack<int>st;voiddfs(intu){ dfn[u]=low[u]=++cnt; st.push(u);......
  • IfcDayInMonthNumber
    IfcDayInMonthNumber类型定义IfcDayInMonthNumber是一个整数,用于定义指定日期在一个月中的位置。 类型:整数 IFC1.5.1中的新型。IFC4添加规则ValidRange的位置 FormalPropositionsRuleDescriptionValidRangeThevalidrangeforpositioningadayinamonth......
  • 在Android Studio中统计代码行数可以通过插件或者内置的工具来实现。以下是两种常用的
    在AndroidStudio中统计代码行数可以通过插件或者内置的工具来实现。以下是两种常用的方法:**方法一:使用插件:**1.打开AndroidStudio,点击顶部菜单中的"File"(文件)。2.选择"Settings"(设置)或"Preferences"(首选项),然后在弹出的窗口中选择"Plugins"(插件)。3.在搜索框中输入"Code......
  • Python如何下载wheel包
    安装wheelpipinstallwheel-ihttps://pypi.douban.com/simple下载pipwheel-ihttps://pypi.douban.com/simpleflask批量下载requirements.txtFlask==2.0.1Flask-Cors==3.0.10flask-restx==0.5.1SQLAlchemy==1.4.22pipwheel-rrequirements.txt......
  • 笔记整理--C语言--数组指针和指针数组的区别 - hongcha_717 - 博客园——转载
    【转载】:原文http://www.cnblogs.com/hongcha717/archive/2010/10/24/1859780.html数组指针和指针数组的区别数组指针(也称行指针)定义int(*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个......
  • c# - 如何在圆角 WPF 窗体中创建圆角矩形?
    我正在WPF中创建一个应用程序,我想要圆角。收到。现在窗体是无边框的,我正在尝试创建一个圆角矩形并将其放在顶部,使其看起来像Windows应用程序的顶部栏。我做不到。这是我的代码:<BorderCornerRadius="50,0,50,0"BorderBrush="Black"BorderThickness="2"Background="......
  • 微信公众号开发获取openid和用户信息的步骤
    <?phpdefine("APPID",'wxe147d9e245s9e343');define("APP_SECRET",'eb5ba07fee64we7uc5f0533cd11a6732');header("Content-type:text/html;charset=utf-8");session_start();if(!isset($_GET['code&#......
  • 【华秋推荐】无线充电的原理与解决方案
    工业和信息化部近日印发《无线充电(电力传输)设备无线电管理暂行规定》。规定”适用于生产或者进口在国内销售、使用的移动通信终端无线充电设备、便携式消费电子产品无线充电设备,以及电动汽车(含摩托车)无线充电设备,该规定将于2024年9月1日起正式施行。这意味着包括智能手机、移动电......
  • C# SECS/GEM协议
    一、概念  SECS/GEMI标准(制造设备通信和控制的通用模型)指的是一组用于管理制造设备和工厂主机系统之间通信的半导体行业标准,由国际半导体协议SEMI发起并维护。GEM基于其他较低级别的标准,如下:图片后补协议名称用途SECS-I定义RS-232通信的标准(报文)HSMS定义TCP/......
  • java私有方法单元测试
    使用junit5,类的代码为packagecom.sysush.tool;publicclassTool1{privatevoidhelloworld(){System.out.println("helloworld");}privateintadd(Integera,Integerb){returna+b;}}测试代码为:importorg.junit.jupiter.api.Test;importjava.lang......