当前位置: 首页 > news >正文

python语言编程文件删除后的恢复方法

Python由荷兰国家数学与计算机科学研究中心的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。个人认为Python的最大优势就两点:1、易于学习 2、跨平台和方便扩展。而无论是那种编程语言,在编写代码过程中都需要一个“承载”代码的“容器”(实际上就和WINDOWS下的记事本一样)。

只要是文件就存在丢失的可能,编程语言生成的文件也不例外,下面我们来聊聊Linux系统下Python代码文件删除后的恢复方法。

故障存储:

存储容量:3.63TB/文件系统:ext4/块大小:4KB

故障现象:

客户描述在一次整理文件时使用“rm”命令(Liunx下删除命令)删除时搞错了目录,导致两个项目中大量的python代码源文件被误删除。出现问题后停止了一切操作,并使用“umount”卸载了问题磁盘。

之后尝试过在“只读”模式下用通用型恢复软件进行扫描,但效果很差。

需要恢复被误删除项目中大量的.py和.ipynb文件,这些文件通常容量不会很大,但是数量很多。

故障分析:

通过查看存在的文件,发现目前逻辑盘中只使用大约389.52GB的空间(图1),用户无法提供删除的文件容量占比只是记得那些被误删除的项目两种文件数量肯定在10W+以上。

.py和.ipynb两种文件简介如下:

  1. .py

  .py 文件是 Python 最基本的源代码文件格式,用于存储纯文本形式的 Python 代码。它是开发者编写程序的主要场所,包含函数、类、变量定义以及执行逻辑(图2)。

  1. .ipynb

   .ipynb 文件是 Jupyter Notebook 的专用格式,它允许用户在一个网页应用中混合编写 Markdown 文本、执行代码、查看输出结果及图表。这种交互式环境特别适合数据科学、教学和快速原型设计(图3)。

图1:使用空间为389.52GB存在大量的剩余空间

图2:py文件

图3:ipynb文件

可以看到py文件是python绝对的“主力军”,全部代码都在此文件中,而ipynb文件应该是python的一种第三方扩展“插件”。分析两种文件文字都为UTF8编码,由于其内容全部为“代码”文字,所以对于存在碎片的情况无法有效的重组(目前能想到的方法只能手工穷举),而考虑到文件较小出现碎片的机率相对低,所以暂时不考虑碎片的情况。

故障处理:

文字类的文件是以“内容”为导向的文件,其不存在什么“文件结构”(也没必要存在),没有文件结构也就没有所谓的“文件头”更不可能有“文件尾”之类的标识,可以说是最难恢复的文件。通过对py和ipynb文件的分析,得出一些相对来讲有一些规律的地方(比如编程语言的保留字等),面临的难题至少有以下几点:

  1. 定位文件(筛选出需要恢复的py和ipynb)
  2. 判断文件内容(对于有碎片或者不正常的文件直接剔除)
  3. 获取文件长度(要求查找到的文件都是正常文件避免二次人工查看)

这3点问题不解决,肯定是无法得到较好的恢复结果的。通过不断对存在文件的查看,并不断收集这些文件的共同点,基本上算是有了一个相应的方案,下一步就是付诸于实践了。

重新写代码过于繁杂,打算把之前写好的恢复程序拿来做一个“基础”那就是---“CHS数据恢复程序Win版”,这个程序纯粹是之前抽空写出来的,也做了调试,后来一直没有机会正式发布,没想到此次恢复还能用到。有了这个程序做基础,就可以重点来调试这两种文件的恢复算法了,经过一周时间的打磨,程序调试完成,对现有的文件进行了测试,效果非常好。下一步就是直接扫描了:-)

STEP1:运行“CHS数据恢复程序Win版”,点击打开加载镜像文件,程序会自动识别Liunx文件系统的起始和结束扇区并自动添加。选择“ext4”逻辑盘,点击右键,扫描。

图4:添加镜像文件

STEP2:设置文件类型,由于只需要查找.py和.ipynb两种文件,所以先点击“查看文件类型”进行设置(图5),然后仅选择这两种文件即可(图6)。设置好后点击确定返回,然后点击扫描就可以了。

图5:查看文件类型进行设置(此截图非本案例仅做演示)

图6:取消所有文件类型只选择py和ipynb

STEP2:等待扫描完成,由于磁盘较大,所以扫描的时间会长一些,默默等待直到完成。

STEP3:扫描完成后可以看到在镜像文件下方增加了一项“恢复_原始文件”的扫描结果,双击此结果就可以查看扫描内容。可以看到共恢复出来147887个文件,虽然没有文件名,客户经过核对其中一个重要项目的数据完整,其它的文件经过长时间核对,基本上确定大多数文件恢复成功,至此恢复工作完成!

图8:CHS数据恢复程序WIN版扫描结果

图9:恢复的结果

图10:预览的文件

图11:恢复出来的ipynb文件

这就是Python代码文件删除后的恢复方法,大家在遇到此类问题时,可以和CHS数据实验室联系!

http://www.dtcms.com/a/273055.html

相关文章:

  • ARM环境上 openEuler扩展根盘并扩展到根分区中
  • 小架构step系列10:日志热更新
  • HTTP核心基础详解(附实战要点)
  • Jaspersoft Studio-6.4.0 TextField内容展示不全
  • [实战]调频(FM)和调幅(AM)信号生成(完整C语言实现)
  • 【养老机器人】核心技术
  • 6. Z 字形变换
  • 决策树与随机森林Python实践
  • 如何测家里是否漏电,4种方法
  • 实时连接,精准监控:风丘科技数据远程显示方案提升试验车队管理效率
  • 倍增法和ST算法 个人学习笔记代码
  • esp32在vscode中仿真调试
  • QT6 源(159)模型视图架构里的文件系统模型 QFileSystemModel 篇二:本类的源代码带注释
  • Building Bridges(搭建桥梁)
  • 【技术追踪】SynPo:基于高质量负提示提升无训练少样本医学图像分割性能(MICCAI-2025)
  • UE5源码模块解析与架构学习
  • 学习软件测试的第十四天(移动端)
  • pyqt-3(QSS、读取带qrc的ui、信号与槽函数)
  • CMake指令:add_custom_command和add_custom_target详解
  • Vue响应式原理五:响应式-自动收集依赖
  • OKHttp 核心知识点详解
  • 页面html,当鼠标点击图标,移开图标,颜色方块消失
  • 【牛客刷题】跳台阶(三种解法深度分析)
  • doker以及网站案例
  • 快速上手ASP .NET Core 8与MongoDB整合
  • 200W 以内的伺服电机 典型应用场景
  • C语言顺序表:从零开始,解锁数据结构之门!
  • YOLO系列pt导出不同onnx方法
  • Renren框架DistributeLock排他锁实现详解
  • 企业内网系统:从传统开发到智能赋能的进化之路