一文教你利用Python制作一個C盤清理器
關于電腦的垃圾清理操作,已經有很多的成熟的軟件可以幫助我們完成C盤的垃圾清理操作,比如360等等。
但是使用三方的清理軟件往往伴隨著很多的廣告,而且很多離線情況下并不允許安裝這樣的三方軟件工具。
作為程序猿,自己動手才能豐衣足食,于是想著何不使用python制作一個簡易的C盤清理工具徹底擺脫系統(tǒng)盤日益膨脹的煩惱呢?
關于python的文件清理操作,實際上我們使用標準模塊os即可滿足所有的文件操作。
一般在C盤的清理過程中,我們能夠清理的文件類型主要如下:
''' '.tmp':?'臨時文件', ????'._mp':?'臨時文件_mp', ????'.log':?'日志文件', ????'.gid':?'臨時幫助文件', ????'.chk':?'磁盤檢查文件', ????'.old':?'臨時備份文件', ????'.xlk':?'Excel備份文件', ????'.bak':?'臨時備份文件bak' '''
既然已經知道了需要清理的文件類型,那實現思路就是將這些文件找出來后刪除掉即可。
將我們接下來代碼塊中使用到的os標準模塊直接導入到代碼塊中。
#?Importing?the?os?module. import?os
現在可以將一些全局變量首先定義好,比如全局的系統(tǒng)操作路徑、待清理的文件后綴名等等。
#?待清理的文件后綴名稱 suffix_dict?=?{ ????'.tmp':?'臨時文件', ????'._mp':?'臨時文件_mp', ????'.log':?'日志文件', ????'.gid':?'臨時幫助文件', ????'.chk':?'磁盤檢查文件', ????'.old':?'臨時備份文件', ????'.xlk':?'Excel備份文件', ????'.bak':?'臨時備份文件bak' } #?用戶緩存數據類型名稱 user_profile_list?=?[ ????'cookies',?'recent',?'Temporary?Internet?Files',?'Temp' ] #?windows系統(tǒng)路徑文件類型 windir_list?=?[ ????'prefetch',?'temp' ] #?系統(tǒng)驅動路徑 sys_drive?=?os.environ['systemdrive']?+?'\\' #?用戶緩存路徑 user_profile?=?os.environ['userprofile'] #?windows系統(tǒng)路徑 win_dir?=?os.environ['windir']
以上相關的C盤清理的全局變量已經設置完成了,接下來我們創(chuàng)建一個ClaenFilesUtil的類來完成對文件清理的業(yè)務操作過程。
#?This?class?is?used?to?clean?up?files?in?a?directory class?CleanFilesUtil(): ????def?__init__(self): ????????""" ????????A?constructor.?It?is?called?when?an?object?is?created?from?a?class?and?it?allows?the?class?to?initialize?the ????????attributes?of?a?class. ????????""" ????????self.del_info?=?{} ????????self.del_file_paths?=?[] ????????self.total_size?=?0 ????????for?suffix_name,?comment?in?suffix_dict.items(): ????????????self.del_info[suffix_name]?=?dict(name=comment,?count=0) ????def?scanf_files(self): ????????""" ????????It?takes?a?list?of?files,?and?returns?a?list?of?lists?of?the?lines?in?each?file ????????""" ????????for?roots,?dirs,?files?in?os.walk(user_profile): ????????????for?files_item?in?files: ????????????????file_extension?=?os.path.splitext(files_item)[1] ????????????????if?file_extension?in?self.del_info: ????????????????????file_full_path?=?os.path.join(roots,?files_item) ????????????????????self.del_file_paths.append(file_full_path) ????????????????????self.del_info[file_extension]['count']?+=?1 ????????????????????self.total_size?+=?os.path.getsize(file_full_path) ????def?show_count_message(self): ????????""" ????????It?prints?the?number?of?messages?in?the?inbox. ????????""" ????????byte?=?self.format_size(self.total_size) ????????for?i?in?self.del_info: ????????????print(self.del_info[i]["name"],?"共計",?self.del_info[i]["count"],?"個") ????????return?byte ????def?format_size(self,?byte): ????????""" ????????It?takes?a?number?of?bytes?and?returns?a?string?with?the?number?of?bytes,?kilobytes,?megabytes,?or?gigabytes, ????????depending?on?the?size ????????:param?byte:?The?size?in?bytes ????????""" ????????try: ????????????kb?=?byte?//?1024 ????????except: ????????????print("傳入字節(jié)格式不對") ????????????return?"Error" ????????if?kb?>?1024: ????????????M?=?kb?//?1024 ????????????if?M?>?1024: ????????????????G?=?M?//?1024 ????????????????return?"%dG"?%?G ????????????else: ????????????????return?"%dM"?%?M ????????else: ????????????return?"%dkb"?%?kb ????def?remove_file_or_dir(self): ????????""" ????????>?This?function?removes?a?file?or?directory ????????""" ????????for?full_path_one?in?self.del_file_paths: ????????????try: ????????????????if?os.path.isfile(full_path_one): ????????????????????os.remove(full_path_one) ????????????????????print("文件:",?full_path_one,?"已移除") ????????????????elif?os.path.isdir(full_path_one): ????????????????????os.rmdir(full_path_one) ????????????????????print("文件夾",?full_path_one,?"已移除") ????????????except?WindowsError: ????????????????print("錯誤:",?full_path_one,?"不能被移除") if?__name__?==?"__main__": ????print("開始初始化C盤清理程序") ????clean_?=?CleanFilesUtil() ????print('C盤清理程序初始化完成') ????print("開始掃描所有待清理文件路徑") ????clean_.scanf_files() ????print("完成所有待清理文件路徑掃描") ????print("掃描完成以下是需要待清理的文件路徑:") ????clean_.show_count_message() ????print("開始執(zhí)行C盤垃圾文件刪除") ????clean_.remove_file_or_dir() ????print("所有C盤垃圾文件已清理完成") ????input("輸入任意鍵關閉窗口...")
以上就是所有C盤垃圾清理的主要程序業(yè)務代碼了,但是為了將該清理工具設置成定時任務去執(zhí)行。
于是,我想到了前幾天發(fā)布的文章[python不要再使用while死循環(huán),使用定時器代替效果更佳!],可以通過定時器的方式來滿足業(yè)務要求。
除了使用代碼塊來完成定時還可以通過配置windows或其他操作系統(tǒng)的定時任務來完成定時執(zhí)行的需求。
最后,為了方便沒有python基礎的小伙伴可以直接使用該工具,我將其打包成了exe應用程序。
到此這篇關于一文教你利用Python制作一個C盤清理器的文章就介紹到這了,更多相關Python C盤清理器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
如何徹底解決Python中matplotlib不顯示中文的問題詳解(顯示方框)
Matplotlib繪制圖像顯示中文的時候,中文會變成小方格子,下面這篇文章主要給大家介紹了關于如何徹底解決Python中matplotlib不顯示中文問題的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-04-04Django drf使用Django自帶的用戶系統(tǒng)的注冊功能
本文主要介紹了Django drf使用Django自帶的用戶系統(tǒng)的注冊功能,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02python中讀入二維csv格式的表格方法詳解(以元組/列表形式表示)
這篇文章主要介紹了python中如何讀入二維csv格式的表格(以元組/列表形式表示),本文通過兩種方法給大家詳細介紹,通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04