思路:
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/]
总结:文件模拟系统优化的地方还有很多,这次的学习笔记仅仅只是冰山一角,往后更深层次的知识还要继续挖掘。
这篇博客通过Python模拟了文件系统,包括创建目录、查看当前目录下的子目录及切换目录等功能。以'/bin/python'为例,介绍了如何处理路径,并提供了简化的代码实现。作者指出,这只是对文件系统模拟的初步探索,还有更多深入的知识待挖掘。

609

被折叠的 条评论
为什么被折叠?



