1. 程式人生 > 程式設計 >用Python自動清理系統垃圾的實現

用Python自動清理系統垃圾的實現

用Python自動清理系統垃圾,再也不用360安全衛士了

在Windows在安裝和使用過程中都會產生相當多的垃圾檔案,包括臨時檔案(如:.tmp、._mp)日誌檔案(.log)、臨時幫助檔案(.gid)、磁碟檢查檔案(.chk)、臨時備份檔案(如:.old、*.bak)以及其他臨時檔案。特別是如果一段時間不清理IE的臨時資料夾“Temporary Internet Files”,其中的快取檔案有時會佔用上百MB的磁碟空間。這些LJ檔案不僅僅浪費了寶貴的磁碟空間,嚴重時還會使系統執行慢如蝸牛。

用Python自動清理系統垃圾的實現

清理電腦垃圾最常用的是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的地方改一下就行了。

用Python自動清理系統垃圾的實現

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","removed")

  except WindowsError:
    print("failure","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系統變數中,方法:在電腦中,右鍵開啟 我的電腦(此電腦)\屬性\高階系統設定\環境變數

用Python自動清理系統垃圾的實現

cmd開啟命令列輸入 python 命令,如下圖即成功:

用Python自動清理系統垃圾的實現

然後新建一個kill360.bat檔案,輸入一下內容:

python clean.py

將其和.py檔案一起放到工作目錄下

用Python自動清理系統垃圾的實現

然後開啟任務計劃程式

用Python自動清理系統垃圾的實現

建立任務及配置過程

用Python自動清理系統垃圾的實現

用Python自動清理系統垃圾的實現

用Python自動清理系統垃圾的實現

然後,就高枕無憂了。

到此這篇關於用Python自動清理系統垃圾的實現的文章就介紹到這了,更多相關Python自動清理系統垃圾內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!