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