用Python自動清理系統垃圾,再也不用360安全衛士了
用Python自動清理系統垃圾,再也不用360安全衛士了
在Windows在安裝和使用過程中都會產生相當多的垃圾檔案,包括臨時檔案(如:.tmp、._mp)日誌檔案(.log)、臨時幫助檔案(.gid)、磁碟檢查檔案(.chk)、臨時備份檔案(如:.old、*.bak)以及其他臨時檔案。特別是如果一段時間不清理IE的臨時資料夾“Temporary Internet Files”,其中的快取檔案有時會佔用上百MB的磁碟空間。這些LJ檔案不僅僅浪費了寶貴的磁碟空間,嚴重時還會使系統執行慢如蝸牛。
清理電腦垃圾最常用的是360安全衛士,看著清理完成,釋放了N個GB的空間,別提多舒適了。 但是作為Pythoneer自然要玩點不一樣的,我向大家介紹一種利用任務計劃執行py指令碼實現自動清理電腦垃圾的方法,感興趣的同學可以試試。
同學們不要太較真哈,本文介紹的方法肯定不能跟360媲美,很早之前網上有個清除垃圾的.bat檔案也能清理電腦垃圾檔案。
本文主要目的是換一種姿勢學習Python的os模組。
一、清理目標
系統盤 %system% 下檔案型別:
【臨時檔案(*.tmp)】
【臨時檔案(*._mp)】
【日誌檔案(*.log)】
【臨時幫助檔案(*.gid)】
【磁碟檢查檔案(*.chk)】
【臨時備份檔案(*.old)】
【Excel備份檔案(*.xlk)】
【臨時備份檔案(*.bak)】
使用者目錄 %userprofile% 下資料夾
【COOKIE】 cookies\*.* 【檔案使用記錄】 recent\*.* 【IE臨時檔案】 Temporary Internet Files\*.* 【臨時檔案資料夾】 Temp\*.*.
Windows 目錄 %windir% 下資料夾
【預讀取資料資料夾】 prefetch\*.*
【臨時檔案】 temp\*.*
Python os
Python os 模組提供了非常豐富的方法用來處理檔案和目錄,它會自適應於不同的作業系統平臺,根據不同的平臺進行相應的操作,在python程式設計時,經常和檔案、目錄打交道,這時就離不了os模組。
具體就不過多介紹,大家可以看一下官方文件,也沒必要細究,用到哪個知道怎麼查就行了。
https://docs.python.org/zh-cn/3/library/os.html
Python指令碼
造輪子不如站在巨人的肩膀上,發現已經有博主寫過了,不過是用Python2編寫的,print的地方改一下就行了。
import os
del_extension = {
'.tmp': '臨時檔案',
'._mp': '臨時檔案_mp',
'.log': '日誌檔案',
'.gid': '臨時幫助檔案',
'.chk': '磁碟檢查檔案',
'.old': '臨時備份檔案',
'.xlk': 'Excel備份檔案',
'.bak': '臨時備份檔案bak'
}
del_userprofile = ['cookies', 'recent', 'Temporary Internet Files', 'Temp']
del_windir = ['prefetch', 'temp']
SYS_DRIVE = os.environ['systemdrive'] + '\\'
USER_PROFILE = os.environ['userprofile']
WIN_DIR = os.environ['windir']
def del_dir_or_file(root):
try:
if os.path.isfile(root):
os.remove(root)
print ("file",root,"removed")
elif os.path.isdir(root):
os.rmdir(root)
print("dir",root,"removed")
except WindowsError:
print("failure",root,"can't remove")
def formatSize(b):
try:
kb = b // 1024
except:
print("傳入位元組格式不對")
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
class DiskClean(object):
def __init__(self):
self.del_info = {}
self.del_file_paths = []
self.total_size = 0
for i,j in del_extension.items():
self.del_info[i] = dict(name = j,count = 0 )
def scanf(self):
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(self):
re = formatSize(self.total_size)
for i in self.del_info:
print(self.del_info[i]["name"],"共計",self.del_info[i]["count"],"個")
return re
def delete_files(self):
for i in self.del_file_paths:
print(i)
del_dir_or_file(i)
if __name__ == "__main__":
print("初始化清理垃圾程式")
cleaner = DiskClean()
print("開始掃描垃圾檔案請耐心等待\n")
cleaner.scanf()
print("掃描成功,結果如下")
re = cleaner.show()
cleaner.delete_files()
調通之後另存為kill360.py,儲存到python的工作目錄,不知道工作目錄可以執行os.getcwd()檢視。
另外還需要確保python的安裝目錄已新增到path系統變數中,方法:在電腦中,右鍵開啟 我的電腦(此電腦)\屬性\高階系統設定\環境變數
cmd開啟命令列輸入 python 命令,如下圖即成功:
然後新建一個kill360.bat檔案,輸入一下內容:
python clean.py
將其和.py檔案一起放到工作目錄下
然後開啟任務計劃程式
建立任務及配置過程
然後,就高枕無憂了。