实验目的:
通过一个简单文件系统目录结构的模拟设计,加深了解文件系统的功能和实现
实验预备内容
复习数据结构中的树型结构。熟悉树节点的插入、删除、修改以及树的遍历方法。
实验内容
编写一段程序,模拟实现一个简单文件系统的树型目录结构,实现以下命令:
命令名 功能 格式
create 创建文件 create FileName size
md 创建目录 md DirectoryName
delete 删除文件 delete FileName
rd 删除目录 rd DirectoryName
cd 改变文件当前目录 cd DirectoryName
返回上一级目录 cd…
dir 列文件目录 dir
dirall 列出全体文件目录(含子目录) dirall
实验结果
相关阅读
Python|页面置换模拟程序设计
Python|银行家算法
Python|独占设备的分配和回收模拟
Python|模拟文件系统
Python|进程调度算法
Python|分页管理方式下存储分配情况模拟
Python|Windows下实现经典进程同步问题——理发师问题
Python|模拟实现动态分区存储管理
完整代码
class Folder:
def __init__(self, father, name):
'''
:param father: 上级目录
:param name: 目录名称
'''
self.father = father
self.name = name
# 目录列表
self.folder = []
# 文件列表
self.file = []
root = Folder(father=None, name='root')
cur = root
path = 'root'
def create(name, size):
# 创建文件
global cur
if name in cur.file:
return print('存在同名文件,新建文件失败!')
cur.file.append({name:size})
return print('新建文件成功!')
def md(name):
# 创建目录
global cur, path
if name in cur.folder:
return print('存在同名文件夹,新建文件夹失败!')
folder = Folder(father=cur, name=name)
cur.folder.append(folder)
return print('新建文件夹成功!')
def delete(name):
# 删除文件
global cur
for i in cur.file:
for key, value in i.items():
if key == name:
cur.file.pop(cur.file.index(i))
return print('删除文件成功!')
return print('文件不存在,删除文件失败!')
def rd(name):
# 删除目录
global cur
for i in cur.folder:
if i.name == name:
cur.folder.pop(cur.folder.index(i))
return print('删除文件夹成功!')
return print('文件夹不存在,删除文件夹失败!')
def cd(name):
# 改变当前目录
global cur, path
if name == '..':
if cur.father != None:
path = path[:(len(path)-len(cur.name))-1]
cur = cur.father
else:
for i in cur.folder:
if i.name == name:
cur = i
path = path + '/' + name
return
return print('找不到指定文件夹!')
def dir():
# 列文件目录
global cur
for i in cur.file:
for key, value in i.items():
print(key, value)
def dirall():
# 列出全体文件目录
global cur
dir()
for i in cur.folder:
print(' ', i.name)
if __name__ == '__main__':
while True:
print(path, end='>')
order = input().split(' ')
if order[0] == 'create':
try:
create(order[1], order[2])
except:
print('格式错误:create FileName size')
elif order[0] == 'md':
try:
md(order[1])
except:
print('格式错误:md FileName')
elif order[0] == 'delete':
try:
delete(order[1])
except:
print('格式错误:delete FileName')
elif order[0] == 'rd':
try:
rd(order[1])
except:
print('格式错误:rd DirectoryName')
elif order[0] == 'cd':
try:
cd(order[1])
except:
print('格式错误:cd DirectoryName/cd ..')
elif order[0] == 'dir':
dir()
elif order[0] == 'dirall':
dirall()
else:
print('{}不是正确的命令'.format(order[0]))