午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

python教你制作一個C盤清理器,幾秒鐘可完成系統(tǒng)盤的清理操作!

 Python集中營 2023-03-26 發(fā)布于甘肅

關(guān)于電腦的垃圾清理操作,已經(jīng)有很多的成熟的軟件可以幫助我們完成C盤的垃圾清理操作,比如360等等。

但是使用三方的清理軟件往往伴隨著很多的廣告,而且很多離線情況下并不允許安裝這樣的三方軟件工具。

如果直接需要exe的C盤清理器可直接前往文末下載該工具。

作為程序猿,自己動手才能豐衣足食,于是想著何不使用python制作一個簡易的C盤清理工具徹底擺脫系統(tǒng)盤日益膨脹的煩惱呢?

關(guān)于python的文件清理操作,實(shí)際上我們使用標(biāo)準(zhǔn)模塊os即可滿足所有的文件操作。

一般在C盤的清理過程中,我們能夠清理的文件類型主要如下:

'''
'.tmp': '臨時文件',
    '._mp': '臨時文件_mp',
    '.log': '日志文件',
    '.gid': '臨時幫助文件',
    '.chk': '磁盤檢查文件',
    '.old': '臨時備份文件',
    '.xlk': 'Excel備份文件',
    '.bak': '臨時備份文件bak'
'''

既然已經(jīng)知道了需要清理的文件類型,那實(shí)現(xiàn)思路就是將這些文件找出來后刪除掉即可。

將我們接下來代碼塊中使用到的os標(biāo)準(zhǔn)模塊直接導(dǎo)入到代碼塊中。

# Importing the os module.
import os

現(xiàn)在可以將一些全局變量首先定義好,比如全局的系統(tǒng)操作路徑、待清理的文件后綴名等等。

# 待清理的文件后綴名稱
suffix_dict = {
    '.tmp''臨時文件',
    '._mp''臨時文件_mp',
    '.log''日志文件',
    '.gid''臨時幫助文件',
    '.chk''磁盤檢查文件',
    '.old''臨時備份文件',
    '.xlk''Excel備份文件',
    '.bak''臨時備份文件bak'
}

# 用戶緩存數(shù)據(jù)類型名稱
user_profile_list = [
    'cookies''recent''Temporary Internet Files''Temp'
]

# windows系統(tǒng)路徑文件類型
windir_list = [
    'prefetch''temp'
]

# 系統(tǒng)驅(qū)動路徑
sys_drive = os.environ['systemdrive'] + '\\'

# 用戶緩存路徑
user_profile = os.environ['userprofile']

# windows系統(tǒng)路徑
win_dir = os.environ['windir']

以上相關(guān)的C盤清理的全局變量已經(jīng)設(shè)置完成了,接下來我們創(chuàng)建一個ClaenFilesUtil的類來完成對文件清理的業(yè)務(wù)操作過程。

# This class is used to clean up files in a directory
class CleanFilesUtil():
    def __init__(self):
        """
        A constructor. It is called when an object is created from a class and it allows the class to initialize the
        attributes of a class.
        """

        self.del_info = {}
        self.del_file_paths = []
        self.total_size = 0
        for suffix_name, comment in suffix_dict.items():
            self.del_info[suffix_name] = dict(name=comment, count=0)

    def scanf_files(self):
        """
        It takes a list of files, and returns a list of lists of the lines in each file
        """

        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_count_message(self):
        """
        It prints the number of messages in the inbox.
        """

        byte = self.format_size(self.total_size)
        for i in self.del_info:
            print(self.del_info[i]["name"], "共計", self.del_info[i]["count"], "個")
        return byte

    def format_size(self, byte):
        """
        It takes a number of bytes and returns a string with the number of bytes, kilobytes, megabytes, or gigabytes,
        depending on the size

        :param byte: The size in bytes
        """

        try:
            kb = byte // 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

    def remove_file_or_dir(self):
        """
        > This function removes a file or directory
        """

        for full_path_one in self.del_file_paths:
            try:
                if os.path.isfile(full_path_one):
                    os.remove(full_path_one)
                    print("文件:", full_path_one, "已移除")
                elif os.path.isdir(full_path_one):
                    os.rmdir(full_path_one)
                    print("文件夾", full_path_one, "已移除")

            except WindowsError:
                print("錯誤:", full_path_one, "不能被移除")


if __name__ == "__main__":
    print("開始初始化C盤清理程序")
    clean_ = CleanFilesUtil()
    print('C盤清理程序初始化完成')
    print("開始掃描所有待清理文件路徑")
    clean_.scanf_files()
    print("完成所有待清理文件路徑掃描")
    print("掃描完成以下是需要待清理的文件路徑:")
    clean_.show_count_message()
    print("開始執(zhí)行C盤垃圾文件刪除")
    clean_.remove_file_or_dir()
    print("所有C盤垃圾文件已清理完成")
    input("輸入任意鍵關(guān)閉窗口...")

以上就是所有C盤垃圾清理的主要程序業(yè)務(wù)代碼了,但是為了將該清理工具設(shè)置成定時任務(wù)去執(zhí)行。

于是,我想到了前幾天發(fā)布的文章[python不要再使用while死循環(huán),使用定時器代替效果更佳!],可以通過定時器的方式來滿足業(yè)務(wù)要求。

除了使用代碼塊來完成定時還可以通過配置windows或其他操作系統(tǒng)的定時任務(wù)來完成定時執(zhí)行的需求。

最后,為了方便沒有python基礎(chǔ)的小伙伴可以直接使用該工具,我將其打包成了exe應(yīng)用程序。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多