意外格式化分区数据如何恢复及如何进行数据清洗?
今天安装Win10系统的时候,不小心删除了分区信息文件夹,导致分区信息丢失,直接识系统别不了分区,提示需要格式化。
当时的内心是一万只CNM奔腾而过,能不能不要这么逗人。然后脑子一热,说格式化就格式化吧,反正资料又不是非常重要,然后手一抖,就点了格式化了。格式化之后,才想起来,这个分区里面,不仅仅存有我个人的资料,
还存有别人的资料,我自己的资料丢失么,就丢失了,但是别人的资料需要找回来啊。
然后打开N多年不怎么用的移动硬盘,找到恢复数据的软件,对数据进行恢复。当然吃瓜群众们肯定会问,为什么不直接在网络上下了,网上大部分能下载的数据恢复软件都是要钱的,并且金额还不低,或者就是需要安装软件的,然后这些软件
都是被别人植入了后门的。
或者就是提示需要注册码,然后需要在淘宝上购买激活码的,总之套路很多,但是我们又急着恢复,哪有这么多的时间来进行这些折腾呢。
好了,废话不多说,直接进入正题。
1.打开绿色版的数据恢复软件。
点击误格式化硬盘,进行数据恢复。
分区数据正在扫描中,等待一会。
我们会看到,好多文件及文件夹
选择我们想要进行恢复的文件夹,进行数据恢复。
数据正在恢复中。
数据恢复之后,我们会看到很多无用的文件和文件夹,这个时候,怎么办呢?
在进行数据恢复的时候。我们都会怕数据丢失,不完整,这个时候,怎么办呢?我们一般都是对搜索到的文件和文件夹都进行恢复,
然后就会恢复出来很多无用的文件和文件夹,我自己恢复的差不多就有9W多个文件夹,然后从这9W个文件夹之后,去找我们想要的数据
那无异于大海捞针。
这个时候怎么办呢?当然是让计算机来进行操作了啊,速度又快,又准确。但是使用计算机来进行数据搜索的话,需要编写专门的应用程序,使用C/C++、Java来编写的话
太浪费时间了,怎么办呢?当然是使用Python了啊,人生苦短,我用Python。
好了,废话就不多说了,撸起袖子,直接开干吧。
import os,sys import shutil def get_file_type(file): filetype = file.split(".") #print(filetype) if(len(filetype) > 0): print("文件类型:%s " % filetype[-1]) else: print("无法识别的文件类型") return filetype def del_file_judge(dir): dir_content = [x for x in os.listdir(dir) if x != dir] size = 0 for f in dir_content: #print(f) fn = os.path.join(dir, f) size = os.path.getsize(fn) get_file_type(f) if (size > 10240000): print("文件名:%s 文件大小: %d" % (f,size)) return False elif (f.lower().find(".ai") > -1): print("找到AI文件:%s \r\n" % f) return False elif (f.lower().find(".psd")> -1): print("找到photoshop文件:%s \r\n" % f) return False # elif (f.lower().find(".otf")> -1): # print("找到字体文件文件:%s \r\n" % f) # return False # elif (f.lower().find(".ttf")> -1): # print("找到字体文件文件:%s \r\n" % f) # return False # elif (f.find(".jpg")> -1): # print("找到图片文件:%s \r\n" % f) # return False # elif (f.lower().find(".png")> -1): # print("找到图片文件:%s \r\n" % f) # return False # elif (f.lower().find(".c")> -1): # print("找到C语言文件:%s \r\n" % f) # return False # elif (f.lower().find(".h")> -1): # print("找到C语言文件:%s \r\n" % f) # return False elif (f.lower().find(".pdf")> -1): print("找到PDF文件:%s \r\n" % f) return False elif (f.lower().find(".doc")> -1): print("找到Doc文件:%s \r\n" % f) return False elif (f.lower().find(".xls")> -1): print("找到Xls文件:%s \r\n" % f) return False # elif (f.lower().find(".txt")> -1): # print("找到Xls文件:%s \r\n" % f) # return False elif (f.lower().find(".pcb")> -1): print("找到电路设计相关文件:%s \r\n" % f) return False elif (f.lower().find(".mp4")> -1): print("找到MP4文件:%s \r\n" % f) return False elif (f.lower().find(".flv")> -1): print("找到FLV文件:%s \r\n" % f) return False elif (f.lower().find(".wmv")> -1): print("找到WMV文件:%s \r\n" % f) return False elif (f.lower().find(".7z")> -1): print("找到压缩包文件:%s \r\n" % f) return False elif (f.lower().find(".zip")> -1): print("找到压缩包文件:%s \r\n" % f) if size < 1024000: print("文件太小,不是需要的文件:%s, %d" % (fn, size)) return True return False elif (f.lower().find(".rar")> -1): print("找到压缩包文件:%s \r\n" % f) return False elif (f.lower().find(".iso")> -1): print("找到光盘文件:%s \r\n" % f) return False elif os.path.isdir(fn): print("找到文件夹:%s \r\n" % fn) return False else: print("将会删除文件夹:%s \r\n" % dir) return True def del_nouseful_file(path): del_flag = False dir_content = [x for x in os.listdir(path) if x != path] for item in dir_content: dir = os.path.join(path, item) try: print("正在分析文件夹: %s \r\n" % dir) del_flag = del_file_judge(dir) print("删除标志:%d " % del_flag) if del_flag: #os.rmdir(dir) #os.rmdir() 方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。 print("正在删除文件夹: %s \r\n" % dir) shutil.rmtree(dir) #删除文件python夹库 else: print("文件夹:%s 将会保存 \r\n" % dir) print(dir) except Exception as e: print('Exception',e) def del_emp_dir(path): for (root, dirs, files) in os.walk(path): for item in dirs: dir = os.path.join(root, item) try: if (len(files) == 0) or (not os.path.isdir(dir)) : os.rmdir(dir) #os.rmdir() 方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。 print(dir) except Exception as e: print('Exception ' , e) print("\r\n") if __name__ == '__main__': dir = r'H:\KDR\\' #D:\KDR del_emp_dir(dir) del_nouseful_file(dir)
如果你也遇到这种情况,需要进行数据清洗和整理的话,也可以使用这个程序。
这个程序会自动删除空文件夹,以及一些无用的文件夹。
Python 运行环境: 建议使用Python3,因为python2不支持中文,如果想要使用Python2的话,请将中文改为英文名称,就能正常运行了。
运行命令如下:
好了,不懂的,需要咨询的,可以加QQ群:
当然了,也可以加我的QQ: