Python實現(xiàn)自動清理電腦垃圾文件詳解
經(jīng)常存在在我們的電腦中的垃圾文件主要是指系統(tǒng)在運行過程中產(chǎn)生的tmp臨時文件、日志文件、臨時備份文件等。垃圾清理器的作用其實也是對這些文件進行清理,不會影響到我們使用產(chǎn)生的數(shù)據(jù)文件。如果是手動刪除的話要一個一個的找出來去刪除就比較麻煩了,用python寫一個腳本直接啟動就大功告成了。
在這個腳本的實現(xiàn)過程中使用到的內(nèi)置庫就是os庫,沒有通過其他的三方插件進行實現(xiàn)。所以也不用下載其他的python模塊,直接調(diào)用內(nèi)置庫就OK了。
import os
因為我們使用界面化的處理,這里導入一下pyqt5的模塊來實現(xiàn)UI界面布局。
from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * import sys
先將需要使用的UI界面編寫完成,還是使用前面涉及到的界面開發(fā)的編寫方式。
class FileDestory(QWidget): def __init__(self): super(FileDestory, self).__init__() self.init_ui() def init_ui(self): self.setWindowTitle('電腦垃圾清理器 公眾號:[Python 集中營]') self.setWindowIcon(QIcon('垃圾桶.ico')) self.setFixedWidth(550) self.setFixedHeight(80) self.process = QProgressBar() self.process.setRange(0, 5) self.start_btn = QPushButton() self.start_btn.setText('開始清理') self.start_btn.clicked.connect(self.start_btn_click) hbox = QHBoxLayout() hbox.addWidget(self.process) hbox.addWidget(self.start_btn) self.thread_ = WorkThread(self) self.thread_.finished.connect(self.finished) self.thread_.exec_step.connect(self.set_step) self.setLayout(hbox) def start_btn_click(self): self.start_btn.setEnabled(False) self.thread_.start() def finished(self, finished): if finished is True: self.start_btn.setText('清理已完成') self.start_btn.setEnabled(False) def set_step(self, step): self.process.setValue(step)
創(chuàng)建工作子線程,所有關(guān)于電腦清理的操作都放在這個子線程中去執(zhí)行,和主線程分離開來避免主線程直接卡死,因為主線程主要是用來處理UI界面相關(guān)的操作。
class WorkThread(QThread): # 定義好信號量用來向主線程中傳遞變量的變化信息,這樣主線程就可以知道運行結(jié)果如何。 # 子線程是否執(zhí)行完成的信號變量 finished = pyqtSignal(bool) # 子線程具體的步驟信號變量 exec_step = pyqtSignal(int) def __init__(self, parent=None): ''' 子線程類的初始化函數(shù) :param parent: UI界面類對象 ''' super(WorkThread, self).__init__(parent) self.working = True self.parent = parent def __del__(self): ''' 線程執(zhí)行是否需要進入等待過程 :return: ''' self.working = False self.wait() def run(self): ''' 子線程主要執(zhí)行邏輯的業(yè)務函數(shù) :return: ''' file_type = { '.tmp': '臨時文件', '._mp': '臨時文件_mp', '.log': '日志文件', '.gid': '臨時幫助文件', '.chk': '磁盤檢查文件', '.old': '臨時備份文件', '.xlk': 'Excel備份文件', '.bak': '臨時備份文件bak' } user_pro = os.environ['userprofile'] def del_file_and_dir(root): try: if os.path.isfile(root): os.remove(root) print("文件", root, "已經(jīng)被移除!") elif os.path.isdir(root): os.rmdir(root) print("文件夾", root, "已經(jīng)被移除!") except WindowsError: print("該文件", root, "不能被移除!") def init_size(b): try: kb = b // 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 class Clean(object): def __init__(self): self.del_info = {} self.del_file_paths = [] self.total_size = 0 for i, j in file_type.items(): self.del_info[i] = dict(name=j, count=0) def count_files(self): for roots, dirs, files in os.walk(user_pro): 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_del_files(self): re = init_size(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 path in self.del_file_paths: print('準備處理文件路徑:', path) del_file_and_dir(path) self.exec_step.emit(1) clean = Clean() self.exec_step.emit(2) clean.count_files() self.exec_step.emit(3) re = clean.show_del_files() self.exec_step.emit(4) clean.delete_files() self.exec_step.emit(5) self.finished.emit(True)
將布局加入main函數(shù)主體循環(huán)中,啟動整個應用。
if __name__ == '__main__': app = QApplication(sys.argv) main = FileDestory() main.show() sys.exit(app.exec_())
以上就是自動清理電腦垃圾文件的全部代碼塊了,copy 到開發(fā)工具中直接運行即可。
到此這篇關(guān)于Python實現(xiàn)自動清理電腦垃圾文件詳解的文章就介紹到這了,更多相關(guān)Python清理垃圾文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python matplotlib折線圖樣式實現(xiàn)過程
這篇文章主要介紹了python matplotlib折線圖樣式實現(xiàn)過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11如何在Python中利用matplotlib.pyplot畫出函數(shù)圖詳解
通過圖像可以直觀地學習函數(shù)變化、分布等規(guī)律,在學習函數(shù)、概率分布等方面效果顯著,下面這篇文章主要給大家介紹了關(guān)于如何在Python中利用matplotlib.pyplot畫出函數(shù)圖的相關(guān)資料,需要的朋友可以參考下2022-08-08