一文教你利用Python制作一個(gè)C盤(pán)清理器
關(guān)于電腦的垃圾清理操作,已經(jīng)有很多的成熟的軟件可以幫助我們完成C盤(pán)的垃圾清理操作,比如360等等。
但是使用三方的清理軟件往往伴隨著很多的廣告,而且很多離線(xiàn)情況下并不允許安裝這樣的三方軟件工具。
作為程序猿,自己動(dòng)手才能豐衣足食,于是想著何不使用python制作一個(gè)簡(jiǎn)易的C盤(pán)清理工具徹底擺脫系統(tǒng)盤(pán)日益膨脹的煩惱呢?
關(guān)于python的文件清理操作,實(shí)際上我們使用標(biāo)準(zhǔn)模塊os即可滿(mǎn)足所有的文件操作。
一般在C盤(pán)的清理過(guò)程中,我們能夠清理的文件類(lèi)型主要如下:
''' '.tmp':?'臨時(shí)文件', ????'._mp':?'臨時(shí)文件_mp', ????'.log':?'日志文件', ????'.gid':?'臨時(shí)幫助文件', ????'.chk':?'磁盤(pán)檢查文件', ????'.old':?'臨時(shí)備份文件', ????'.xlk':?'Excel備份文件', ????'.bak':?'臨時(shí)備份文件bak' '''
既然已經(jīng)知道了需要清理的文件類(lèi)型,那實(shí)現(xiàn)思路就是將這些文件找出來(lái)后刪除掉即可。
將我們接下來(lái)代碼塊中使用到的os標(biāo)準(zhǔn)模塊直接導(dǎo)入到代碼塊中。
#?Importing?the?os?module. import?os
現(xiàn)在可以將一些全局變量首先定義好,比如全局的系統(tǒng)操作路徑、待清理的文件后綴名等等。
#?待清理的文件后綴名稱(chēng) suffix_dict?=?{ ????'.tmp':?'臨時(shí)文件', ????'._mp':?'臨時(shí)文件_mp', ????'.log':?'日志文件', ????'.gid':?'臨時(shí)幫助文件', ????'.chk':?'磁盤(pán)檢查文件', ????'.old':?'臨時(shí)備份文件', ????'.xlk':?'Excel備份文件', ????'.bak':?'臨時(shí)備份文件bak' } #?用戶(hù)緩存數(shù)據(jù)類(lèi)型名稱(chēng) user_profile_list?=?[ ????'cookies',?'recent',?'Temporary?Internet?Files',?'Temp' ] #?windows系統(tǒng)路徑文件類(lèi)型 windir_list?=?[ ????'prefetch',?'temp' ] #?系統(tǒng)驅(qū)動(dòng)路徑 sys_drive?=?os.environ['systemdrive']?+?'\\' #?用戶(hù)緩存路徑 user_profile?=?os.environ['userprofile'] #?windows系統(tǒng)路徑 win_dir?=?os.environ['windir']
以上相關(guān)的C盤(pán)清理的全局變量已經(jīng)設(shè)置完成了,接下來(lái)我們創(chuàng)建一個(gè)ClaenFilesUtil的類(lèi)來(lái)完成對(duì)文件清理的業(yè)務(wù)操作過(guò)程。
#?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"],?"共計(jì)",?self.del_info[i]["count"],?"個(gè)") ????????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é)格式不對(duì)") ????????????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("錯(cuò)誤:",?full_path_one,?"不能被移除") if?__name__?==?"__main__": ????print("開(kāi)始初始化C盤(pán)清理程序") ????clean_?=?CleanFilesUtil() ????print('C盤(pán)清理程序初始化完成') ????print("開(kāi)始掃描所有待清理文件路徑") ????clean_.scanf_files() ????print("完成所有待清理文件路徑掃描") ????print("掃描完成以下是需要待清理的文件路徑:") ????clean_.show_count_message() ????print("開(kāi)始執(zhí)行C盤(pán)垃圾文件刪除") ????clean_.remove_file_or_dir() ????print("所有C盤(pán)垃圾文件已清理完成") ????input("輸入任意鍵關(guān)閉窗口...")
以上就是所有C盤(pán)垃圾清理的主要程序業(yè)務(wù)代碼了,但是為了將該清理工具設(shè)置成定時(shí)任務(wù)去執(zhí)行。
于是,我想到了前幾天發(fā)布的文章[python不要再使用while死循環(huán),使用定時(shí)器代替效果更佳!],可以通過(guò)定時(shí)器的方式來(lái)滿(mǎn)足業(yè)務(wù)要求。
除了使用代碼塊來(lái)完成定時(shí)還可以通過(guò)配置windows或其他操作系統(tǒng)的定時(shí)任務(wù)來(lái)完成定時(shí)執(zhí)行的需求。
最后,為了方便沒(méi)有python基礎(chǔ)的小伙伴可以直接使用該工具,我將其打包成了exe應(yīng)用程序。
到此這篇關(guān)于一文教你利用Python制作一個(gè)C盤(pán)清理器的文章就介紹到這了,更多相關(guān)Python C盤(pán)清理器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python將圖片轉(zhuǎn)base64,實(shí)現(xiàn)前端顯示
今天小編就為大家分享一篇python將圖片轉(zhuǎn)base64,實(shí)現(xiàn)前端顯示,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01Tornado實(shí)現(xiàn)多進(jìn)程/多線(xiàn)程的HTTP服務(wù)詳解
這篇文章主要介紹了Tornado實(shí)現(xiàn)多進(jìn)程/多線(xiàn)程的HTTP服務(wù)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值2019-07-07如何徹底解決Python中matplotlib不顯示中文的問(wèn)題詳解(顯示方框)
Matplotlib繪制圖像顯示中文的時(shí)候,中文會(huì)變成小方格子,下面這篇文章主要給大家介紹了關(guān)于如何徹底解決Python中matplotlib不顯示中文問(wèn)題的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04Python接口自動(dòng)化測(cè)試的實(shí)現(xiàn)
這篇文章主要介紹了Python接口自動(dòng)化測(cè)試的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Django drf使用Django自帶的用戶(hù)系統(tǒng)的注冊(cè)功能
本文主要介紹了Django drf使用Django自帶的用戶(hù)系統(tǒng)的注冊(cè)功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02對(duì)python中的iter()函數(shù)與next()函數(shù)詳解
今天小編就為大家分享一篇對(duì)python中的iter()函數(shù)與next()函數(shù)詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10python中threading開(kāi)啟關(guān)閉線(xiàn)程操作
這篇文章主要介紹了python中threading開(kāi)啟關(guān)閉線(xiàn)程操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05python中讀入二維csv格式的表格方法詳解(以元組/列表形式表示)
這篇文章主要介紹了python中如何讀入二維csv格式的表格(以元組/列表形式表示),本文通過(guò)兩種方法給大家詳細(xì)介紹,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04