栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

操作系统文件管理实验

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

操作系统文件管理实验

1. 实验目的

用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。

2. 实验内容与要求

要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,提供以下有关操作命令:create、delete、open、close、read、write以及在此基础上增加 2~3个其它文件操作命令(如移动读写指针,改变文件属性,更换文件名,改变文件保护级别),并加以实现。

3. 流程图与模块调用

4. 实验分析

(1)文件的数据结构

class file:
    def __init__(self, uid, fid, name, status):
        self.uid = uid          #文件的UID
        self.fid = fid          #文件的FID
        self.name = name        #文件名
        self.status = status    #文件的状态

(2)文件目录展示函数

def Lfile(arr):
    str = '更新后的文件目录为:n'
    for index, item in enumerate(arr):
        str += '{}、文件名:{} t文件FID:{} t文件状态:{}n'.format((index + 1), item.name, item.fid, item.status)
    print(str)   

(3)主函数

def main():
    print("有以下用户:A B C D E F G H I Jn")
    option = input('请输入用户名:')
    print('操作目录:0、exittt1、creatt2、delestntt3、opentt4、closet5、readntt6、writen')
    if option in mfd:
        files = []  # 存放属于该用户的文件
        for item in ufd:
            if item.uid == option:
                files.append(item)

        instruct = int(input('请输入指令:'))
        while True:
            if instruct==0:
                print("系统退出")
                break
            elif instruct == 1:           #创建新的文件
                if len(files) < 10:
                    a = input('请输入文件名:')
                    p = file(option, len(files) + 1, a, 'close')
                    ufd.append(p)
                    files.append(p)
                    Lfile(files)
                    instruct = int(input('请输入指令:'))
                else:
                    print('文件库已满')
                    instruct = int(input('请输入指令:'))
            elif instruct == 2:             #删除文件
                b = int(input('请输入文件的FID:'))
                for item in files:
                    if item.fid == b:
                        files.remove(item)
                        Lfile(files)
                instruct = int(input('请输入指令:'))
            elif instruct == 3:            #打开文件
                c = int(input('请输入文件的FID:'))
                for item in files:
                    if item.fid == c:
                        item.status = 'open'
                        Lfile(files)
                instruct = int(input('请输入指令:'))
            elif instruct == 4:              #关闭文件
                d = int(input('请输入文件的FID:'))
                for item in files:
                    if item.fid == d:
                        item.status = 'close'
                        Lfile(files)
                instruct = int(input('请输入指令:'))
            elif instruct == 5:             #读文件
                e = int(input('请输入文件的FID:'))
                for item in files:
                    if item.fid == e:
                        item.status = 'read'
                        Lfile(files)
                instruct = int(input('请输入指令:'))
            elif instruct == 6:             #写文件
                f = int(input('请输入文件的FID:'))
                for item in files:
                    if item.fid == f:
                        item.status = 'write'
                        Lfile(files)
                instruct = int(input('请输入指令:'))
            else:
                print("指令错误")
                break
    else:
        print("查无此人,系统退出")
5. 总代码
# coding=gbk
mfd = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
ufd = []


class file:
    def __init__(self, uid, fid, name, status):
        self.uid = uid
        self.fid = fid
        self.name = name
        self.status = status


def Lfile(arr):
    str = '更新后的文件目录为:n'
    for index, item in enumerate(arr):
        str += '{}、文件名:{} t文件FID:{} t文件状态:{}n'.format((index + 1), item.name, item.fid, item.status)
    print(str)       

def main():
    print("有以下用户:A B C D E F G H I Jn")
    option = input('请输入用户名:')
    print('操作目录:0、exittt1、creatt2、delestntt3、opentt4、closet5、readntt6、writen')
    if option in mfd:
        files = []  # 存放属于该用户的文件
        for item in ufd:
            if item.uid == option:
                files.append(item)

        instruct = int(input('请输入指令:'))
        while True:
            if instruct==0:
                print("系统退出")
                break
            elif instruct == 1:           #创建新的文件
                if len(files) < 10:
                    a = input('请输入文件名:')
                    p = file(option, len(files) + 1, a, 'close')
                    ufd.append(p)
                    files.append(p)
                    Lfile(files)
                    instruct = int(input('请输入指令:'))
                else:
                    print('文件库已满')
                    instruct = int(input('请输入指令:'))
            elif instruct == 2:             #删除文件
                b = int(input('请输入文件的FID:'))
                for item in files:
                    if item.fid == b:
                        files.remove(item)
                        Lfile(files)
                instruct = int(input('请输入指令:'))
            elif instruct == 3:            #打开文件
                c = int(input('请输入文件的FID:'))
                for item in files:
                    if item.fid == c:
                        item.status = 'open'
                        Lfile(files)
                instruct = int(input('请输入指令:'))
            elif instruct == 4:              #关闭文件
                d = int(input('请输入文件的FID:'))
                for item in files:
                    if item.fid == d:
                        item.status = 'close'
                        Lfile(files)
                instruct = int(input('请输入指令:'))
            elif instruct == 5:             #读文件
                e = int(input('请输入文件的FID:'))
                for item in files:
                    if item.fid == e:
                        item.status = 'read'
                        Lfile(files)
                instruct = int(input('请输入指令:'))
            elif instruct == 6:             #写文件
                f = int(input('请输入文件的FID:'))
                for item in files:
                    if item.fid == f:
                        item.status = 'write'
                        Lfile(files)
                instruct = int(input('请输入指令:'))
            else:
                print("指令错误")
                break
    else:
        print("查无此人,系统退出")

if __name__ == '__main__':
    main()
6. 运行情况

(1)创建、删除、打开文件

(2)读取、写入、退出文件

(3)指令错误

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1001729.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号