意外格式化分區數據如何恢復及如何進行數據清洗?

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章