python--文件管理系统
文件系统管理项目说明文档
项目说明
-
基本任务
- 在内存中开辟一个空间作为文件存储器,在其上实现一个简单的文件系统
- 退出这个文件系统时,需要该文件系统的内容保存到磁盘上,以便下次可以将其回复到内存中来
-
具体要求
- 文件存储空间管理可采取链接结构(如FAT文件系统中的显式链接等)或者其他学过的方法
- 空闲空间管理可采用位图或者其他方法
- 文件目录采用多级目录结构,目录项目中应包含:文件名、物理地址、长度等信息
- 需提供格式化,创建子目录,删除子目录,显示目录,更改当前目录,创建文件,打开文件,关闭文件,写文件,读文件,删除文件等操作
功能实现
各部分组件说明
-
顶部菜单栏,提供了所有文件操作,包括格式化,保存,增加/删除/重命名和关于,教程

-
上方地址栏显示当前选中文件/文件夹绝对路径

-
左侧文件目录,以树状结构展示文件架构

-
右侧文本编辑框,实时显示选中文件的内容,修改后点击下方
SAVE按钮可保存

- 下方脚注显示当前选中文件/文件夹的信息

- 右键显示菜单

实现原理
-
构建一个
FileSystem类(见file_system_components.py,可以模拟文件系统的各种操作,其中:- 文件块用
FCB类表示,存储其名称、长度、创建时间、修改时间 - 磁盘存储用
Disk类表示 - 文件组织方式采用链接方式中的FAT方法。代码中构建了一个
FAT类,以存储文件的链表存储结构。 - 空闲区间用位图存储,以
FreeSpace类表示 - 多级目录用
FileTree表示,其中:FileTreeNode为多级目录中的文件夹结点- 多级目录中的文件结点直接为FCB,且一定为叶节点
- 文件块用
-
增加文件时,增加
FCB块,并加入到FileTree中;写入时,额外写入到磁盘Disk中,同时将FreeSpace中对应位置赋值0:cur_index = FAT_ENDwhile data != "":next_index = self.find_free_index()if next_index == -1:raise AssertionError("don't have enough space!!")if cur_index == FAT_END:fcb.start_address = next_indexelse:self.fat.table[cur_index] = next_indexself.disk[next_index] = data[:BLOCK_SIZE]data = data[BLOCK_SIZE:]self.free_space.bitmap[next_index] = SPACE_OCCUPYcur_index = next_indexself.fat.table[cur_index] = FAT_END删除文件同理:
cursor = fcb.start_address if cursor is not None:while cursor != FAT_END:self.disk[cursor] = ""self.free_space.bitmap[cursor] = SPACE_FREEnext_position = self.fat.table[cursor]self.fat.table[cursor] = SPACE_FREEcursor = next_position -
构建对应的UI,并用PyQt中的
QTreeView模拟左侧的树结构,每次操作后更新QTreeView中的model
运行方法
-
直接运行
已经通过pyinstaller生成了Windows上的可执行文件。
在Windows系统上点击file_system_main.exe,即可运行程序 -
编译运行
-
Python version:3.8
-
安装PyQt5和qt-material(用来应用本程序所需的UI样式)和bitarray(用位图表示剩余空间)
pip install PyQt5 pip install qt-material pip install bitarray
-
运行源码
python file_system_main.py
-
运行截图



项目总结
项目亮点
- 采用PyQt5进行图形化开发,并应用
qt-material,增加较多图标,较为美观 - 提供了菜单栏工具和右键选择菜单两种操作方式
改进方向
- 未来可以尝试采用别的文件管理策略
相关文章:
python--文件管理系统
文件系统管理项目说明文档 项目说明 基本任务 在内存中开辟一个空间作为文件存储器,在其上实现一个简单的文件系统退出这个文件系统时,需要该文件系统的内容保存到磁盘上,以便下次可以将其回复到内存中来 具体要求 文件存储空间管理可采取链…...
uniapp 微信小程序:RecorderManager 录音DEMO
uniapp 微信小程序:RecorderManager 录音DEMO 简介index.vue参考资料 简介 使用 RecorderManager 实现录音。及相关的基本操作。(获取文件信息,上传文件) 此图包含Demo中用于上传测试的服务端程序upload.exe,下载后用…...
__call__和__init__和__new__和__str__和__repr__
目录 一、__call__ 二、__init__和__new__ 三、__str__ 四、__repr__ python从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129328397?spm1001.2014.3001.5502 一、__call__ 对象后面加括号时,触发执行。注:构…...
设计模式--工厂模式(Factory Pattern)
一、 什么是工厂模式 工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的接口,但是将对象的实例化过程推迟到子类中。工厂模式允许通过调用一个共同的接口方法来创建不同类型的对象,而无需暴露对…...
【Android】 No matching variant of com.android.tools.build:gradle:[版本号] was found
项目报错 No matching variant of com.android.tools.build:gradle:8.1.1 was found. The consumer was configured to find a library for use during runtime, compatible with Java 8, packaged as a jar, and its dependencies declared externally, as well as attribute …...
650V 1200V碳化硅二极管MOS管规格书参数,6A 8A 10A 15A 20A 封装TO220低VF电压 低内阻特性
650V碳化硅二极管6A 8A 15A提供样品 650V 40毫欧超结COOL MOS提供样品 650V 超结COOL MOS资料 国产替代 650V 1200V碳化硅二极管技术资料...
python基础—python6种基本数据类型及数据类型之间转换
文章目录 一、python标准数据类型(一)数字类型整型:int浮点型:flaot布尔型:bool复数类型:complex (二)字符串(三)列表类型(四)元组类型…...
Axure RP
Axure RP 简介下载安装汉化注册 简介 Axure RP(Rapid Prototyping)是一款交互式原型设计工具,用于创建高保真的交互式界面原型和线框图。它主要用于用户体验(UX)和用户界面(UI)设计,…...
java使用ExcelExportUtil.exportBigExcel导出大文件(非分页)
网上看到很多使用这个方法处理的时候,大多使用的分页进行查询,但是当遇到特殊的产品需求,比如A类型数据,多条记录就显示多行,B类型的要求存在多条记录时,就进行汇总后只显示一条,这就导致无法使…...
PlantUML文本绘制类图
记录下文本绘制类图的语法 参考 https://juejin.cn/post/6844903731293585421 类的UML表示 使用UML表示一个类,主要由三部分组成。类名、属性、方法。其中属性和方法的访问修饰符用 - 、# 、 表示 private、protected、public。 如图所示,表示A类有一个…...
5分钟理解NPL算法 之 马尔可夫链 Markov Chain
马尔可夫链(Markov Chain) 马尔可夫链是一种简单的推理模型。用于描述受当前事件影响下的下一事件发生概率。在预测学科中广泛应用。例如股票预测、文字推理、路线推荐等。 他的核心思路是:假设事件顺序为: X 1 , X 2 , X 3 , . . . . . X…...
C#_GDI+ 绘图编程入门
官网提供相关API GDI 基本图形功能_drawing 高级二维和矢量图形功能_drawing2D GDI 图像处理功能_Imaging GDI 排版功能_text Windows 窗体应用程序提供打印功能_Printing 像素 构成图像的最小单位就是像素;屏幕上显示不管是位图或者矢量图,当描述…...
自己写一个svg转化为安卓xml的工具类
自己写一个svg转化为安卓xml的工具类_张风捷特烈的博客-CSDN博客 svg资源阿里巴巴矢量资源网站:iconfont-阿里巴巴矢量图标库 感觉一般的svg到Android可用的xml差异有点规律,主要的就是path 秉承着能用代码解决的问题,绝对不动手。能够靠智商解决的问题…...
基于随机森林的机器启动识别,基于随机森林的智能家居电器启动识别
目录 背影 摘要 随机森林的基本定义 随机森林实现的步骤 基于随机森林的机器启动识别 代码下载链接: 基于随机森林的家用电器启动识别,基于RF的电器启动识别,基于随机森林的智能家居启动检测-深度学习文档类资源-CSDN文库 https://download.csdn.net/download/abc991835105/…...
Apache Doris 极简运维之BE扩缩容(1)
Apache Doris 极简运维之BE扩缩容(1) 一、环境信息硬件信息软件信息 二、缩容2.1 DROP BACKEND缩容2.2 DECOMMISSION BACKEND缩容2.2.1 缩容前2.2.2 缩容中2.2.3 缩容后 三、扩容3.1 扩容前3.2 扩容中3.3 扩容后 四、总结 一、环境信息 已部署三个BE节点…...
MySQL每日一练--校园教务系统
一丶数据库名称:SchoolDB 二丶数据库表信息:角色信息表 表名: t_role 主键: r_id 序号 字段名称 字段说明 类别 位数 属性 备注 1 r_id 角色编号 int 主键 自动增长 2 r_name_EN 角色名(英…...
9.阿里Sentinel哨兵
1.Sentinel Sentinel(哨兵)是由阿里开源的一款流量控制和熔断降级框架,用于保护分布式系统中的应用免受流量涌入、超载和故障的影响。它可以作为微服务架构中的一部分,用于保护服务不被异常流量冲垮,从而提高系统的稳定…...
设计模式之工厂方法模式
目录 工厂方法模式 简介 优缺点 结构 使用场景 实现 1.抽象产品 2.具体产品 3.抽象工厂 4.具体工厂 5.调用 总结 抽象工厂模式 简介 结构 实现 区别 工厂方法模式 简介 提供一个用于创建对象的接口(工厂接口),让其实现类(工厂实现类)决定实例化哪…...
【案例教程】基于R语言的物种气候生态位动态量化与分布特征模拟
在全球气候快速变化的背景下,理解并预测生物种群如何应对气候变化,特别是它们的地理分布如何变化,已经变得至关重要。利用R语言进行物种气候生态位动态量化与分布特征模拟,不仅可以量化描述物种对环境的需求和适应性,预…...
Moonbeam生态跨链互操作项目汇总
立秋已过,今年的夏天已经接近尾声,即将迎来凉爽的秋天。Moonbeam生态一同以往持续成长,在8月也举办了不少活动、完成集成合作以及协议更新。让我们一同快速了解Moonbeam生态项目近期发生的大小事件吧! Moonwell Moonwell是一个建…...
Parsec VDD虚拟显示器驱动深度解析:5大优化策略与实战应用指南
Parsec VDD虚拟显示器驱动深度解析:5大优化策略与实战应用指南 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd Parsec Virtual Display Driver (VDD) 是一款基于Windo…...
英文论文AI率从97%降至8%:6款工具横测,这款神器绝不打乱排版!
前阵子我文章有两页的英文检测ai率居然冲到了97% 。我当时也是整个人都傻了。 作为一名每天和各种内容辅助工具打交道的博主,我太理解大家面对那张通红的检测报告时的心情。 既然大家都面临英文降ai这个难题,今天咱们就抛开那些虚头巴脑的理论…...
图灵奖得主断言“AI Agent最后全是数据库问题”,YashanDB如何破解 AI落地困
近日,图灵奖得主、数据库领域的泰斗级人物Mike Stonebraker的一番言论在科技圈引发轩然大波。他一针见血地指出:“AI Agent的发展,最后全都是数据库问题。”这句话扯下了当前 AI Agent 狂飙突进背后的“遮羞布”。当我们惊叹于多智能体&#…...
微信小程序逆向工程终极指南:wxappUnpacker深度解析与实用技巧
微信小程序逆向工程终极指南:wxappUnpacker深度解析与实用技巧 【免费下载链接】wxappUnpacker forked from https://github.com/qwerty472123/wxappUnpacker 项目地址: https://gitcode.com/gh_mirrors/wxappu/wxappUnpacker 微信小程序逆向工程是开发者深入…...
城通网盘直连解析工具:3分钟告别限速烦恼
城通网盘直连解析工具:3分钟告别限速烦恼 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘那令人抓狂的下载速度而苦恼吗?每次下载大文件都要面对漫长的等待倒计时…...
5分钟掌握猫抓浏览器扩展:免费视频下载和媒体嗅探终极指南
5分钟掌握猫抓浏览器扩展:免费视频下载和媒体嗅探终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓(cat-catch)是一款专业的…...
React Hook useVibe:声明式时序管理与交互感知的工程实践
1. 项目概述:一个能“感知”用户意图的React Hook 最近在做一个需要深度交互的前端项目,遇到了一个挺有意思的痛点:如何让UI组件不只是被动地响应事件,而是能更“聪明”地理解用户的交互意图,甚至预判下一步操作&#…...
Claude Markdown增强资源库:提升AI文档生成质量与效率
1. 项目概述:为什么我们需要一个“Claude Markdown 增强”资源库? 如果你和我一样,是 Claude 的深度用户,并且经常用它来辅助编程、撰写文档或整理知识,那你一定遇到过这个痛点:Claude 输出的 Markdown 代…...
手把手教你用PyTorch 0.4.1复现D-LinkNet道路分割(附完整代码与数据集)
从零复现D-LinkNet道路分割:PyTorch 0.4.1实战指南 当你在GitHub上发现一个两年前的热门道路分割项目D-LinkNet,却发现它依赖PyTorch 0.4.1和CUDA 8.0这种"古董级"环境时,是否感到无从下手?本文将带你穿越时空…...
半导体行业复苏:晶圆出货与EDA增长背后的技术驱动力与挑战
1. 行业复苏信号:晶圆出货量与EDA市场的强劲联动最近和几位在晶圆厂和芯片设计公司工作的老朋友聊天,大家不约而同地提到一个感受:产线又忙起来了,设计部门的项目排期也肉眼可见地变长了。这种感觉并非空穴来风,近期SE…...
