1. 程式人生 > 實用技巧 >用Python自動清理系統垃圾,再也不用360安全衛士了

用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檔案一起放到工作目錄下

然後開啟任務計劃程式

建立任務及配置過程

然後,就高枕無憂了。