小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Python 自動(dòng)清理電腦垃圾文件,一鍵啟動(dòng)即可...

 Python集中營(yíng) 2022-10-10 發(fā)布于甘肅

經(jīng)常存在在我們的電腦中的垃圾文件主要是指系統(tǒng)在運(yùn)行過(guò)程中產(chǎn)生的tmp臨時(shí)文件、日志文件、臨時(shí)備份文件等。垃圾清理器的作用其實(shí)也是對(duì)這些文件進(jìn)行清理,不會(huì)影響到我們使用產(chǎn)生的數(shù)據(jù)文件。如果是手動(dòng)刪除的話要一個(gè)一個(gè)的找出來(lái)去刪除就比較麻煩了,用python寫(xiě)一個(gè)腳本直接啟動(dòng)就大功告成了。

在這個(gè)腳本的實(shí)現(xiàn)過(guò)程中使用到的內(nèi)置庫(kù)就是os庫(kù),沒(méi)有通過(guò)其他的三方插件進(jìn)行實(shí)現(xiàn)。所以也不用下載其他的python模塊,直接調(diào)用內(nèi)置庫(kù)就OK了。

import os

因?yàn)槲覀兪褂媒缑婊奶幚?,這里導(dǎo)入一下pyqt5的模塊來(lái)實(shí)現(xiàn)UI界面布局。

from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys

先將需要使用的UI界面編寫(xiě)完成,還是使用前面涉及到的界面開(kāi)發(fā)的編寫(xiě)方式。

class FileDestory(QWidget):
    def __init__(self):
        super(FileDestory, self).__init__()
        self.init_ui()

    def init_ui(self):
        self.setWindowTitle('電腦垃圾清理器  公眾號(hào):[Python 集中營(yíng)]')
        self.setWindowIcon(QIcon('垃圾桶.ico'))
        self.setFixedWidth(550)
        self.setFixedHeight(80)

        self.process = QProgressBar()
        self.process.setRange(05)

        self.start_btn = QPushButton()
        self.start_btn.setText('開(kāi)始清理')
        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)于電腦清理的操作都放在這個(gè)子線程中去執(zhí)行,和主線程分離開(kāi)來(lái)避免主線程直接卡死,因?yàn)橹骶€程主要是用來(lái)處理UI界面相關(guān)的操作。

class WorkThread(QThread):
    # 定義好信號(hào)量用來(lái)向主線程中傳遞變量的變化信息,這樣主線程就可以知道運(yùn)行結(jié)果如何。

    # 子線程是否執(zhí)行完成的信號(hào)變量
    finished = pyqtSignal(bool)

    # 子線程具體的步驟信號(hào)變量
    exec_step = pyqtSignal(int)

    def __init__(self, parent=None):
        '''
        子線程類(lèi)的初始化函數(shù)
        :param parent: UI界面類(lèi)對(duì)象
        '''

        super(WorkThread, self).__init__(parent)
        self.working = True
        self.parent = parent

    def __del__(self):
        '''
        線程執(zhí)行是否需要進(jìn)入等待過(guò)程
        :return:
        '''

        self.working = False
        self.wait()

    def run(self):
        '''
        子線程主要執(zhí)行邏輯的業(yè)務(wù)函數(shù)
        :return:
        '''

        file_type = {
            '.tmp''臨時(shí)文件',
            '._mp''臨時(shí)文件_mp',
            '.log''日志文件',
            '.gid''臨時(shí)幫助文件',
            '.chk''磁盤(pán)檢查文件',
            '.old''臨時(shí)備份文件',
            '.xlk''Excel備份文件',
            '.bak''臨時(shí)備份文件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é)格式不對(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

        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"], "共計(jì)", self.del_info[i]["count"], "個(gè)")
                return re

            def delete_files(self):
                for path in self.del_file_paths:
                    print('準(zhǔn)備處理文件路徑:', 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)中,啟動(dòng)整個(gè)應(yīng)用。

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = FileDestory()
    main.show()
    sys.exit(app.exec_())

以上就是自動(dòng)清理電腦垃圾文件的全部代碼塊了,copy 到開(kāi)發(fā)工具中直接運(yùn)行即可。

「Python 集中營(yíng)」,只做知識(shí)分享 !



點(diǎn)擊下面的連接,查看歷史文章
有了jmespath,處理python中的json數(shù)據(jù)就變成了一種享受...
解鎖一個(gè)新技能,如何在Python代碼中使用表情包...

萬(wàn)能的list列表,python中的堆棧、隊(duì)列實(shí)現(xiàn)全靠它!

該怎么用pyqt5來(lái)實(shí)現(xiàn)數(shù)據(jù)的增、刪、改、查功能...
介紹一個(gè)文本語(yǔ)音神器,幾行代碼就能搞定!
python批量自動(dòng)整理文件

初學(xué)者福利:分享五個(gè)免費(fèi)的 Python 學(xué)習(xí)網(wǎng)站,抓緊收藏吧!
有趣的控制臺(tái)玩法:一行代碼繪制控制臺(tái)圖像!
數(shù)據(jù)處理小工具:Excel 批量數(shù)據(jù)文件拆分/整合器...

辦公自動(dòng)化:PDF文件合并器,將多個(gè)PDF文件進(jìn)行合并...
GUI猜數(shù)字游戲,直接開(kāi)玩...
手把手教你做一個(gè)數(shù)據(jù)圖表生成器(附源碼)...

點(diǎn)個(gè)“在看”每天收到最新消息!

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多