意外格式化分区数据如何恢复及如何进行数据清洗?

    今天安装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:

 

posted @ 2019-10-25 21:28  badwell  阅读(773)  评论(0编辑  收藏  举报