溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Python怎么解決手機(jī)qq微信內(nèi)存占用太多問(wèn)題

發(fā)布時(shí)間:2022-02-16 09:11:56 來(lái)源:億速云 閱讀:112 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“Python怎么解決手機(jī)qq微信內(nèi)存占用太多問(wèn)題”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“Python怎么解決手機(jī)qq微信內(nèi)存占用太多問(wèn)題”文章能幫助大家解決問(wèn)題。

    glob 模塊

    glob 模塊非常簡(jiǎn)單,就是用來(lái)查找文件和文件夾。查找文件只用到三個(gè)匹配符:"*", "?", "[]"。

    通配符 功能

    • *:匹配0或多個(gè)字符

    • **:匹配所有文件,目錄,子目錄和子目錄里面的文件

    • ?:匹配一個(gè)字符,這里與正則表達(dá)式? (正則?匹配前面表達(dá)式0次或者1次)

    • []:匹配指定范圍內(nèi)的字符,如: [1-9]匹配1至9內(nèi)的字符

    • [!]:匹配不在指定范圍內(nèi)的字符

    glob方法

    這個(gè)方法返回所有匹配的文件路徑列表

    # 當(dāng)前路徑下所有 py 文件
    for fname in glob.glob("**/*.py",recursive=True):
        print(fname)
     
    # 當(dāng)前路徑文件 py 下 py 文件
    for fname in glob.glob("py/*.py"):
        print(fname)
     
    # 單字通配符 ?,當(dāng)前路徑文件下以 Tem 開(kāi)頭后有一個(gè)字符文件夾
    for fname in glob.glob("Tem?"):
        print(fname)
     
    # 范圍通配符[],當(dāng)前路徑文件下以 Tem 開(kāi)頭后一個(gè)數(shù)字符的 py 文件
    for fname in glob.glob("Tem[0-9].py"):
        print(fname)
     
    # 范圍通配符[!],當(dāng)前路徑文件下以 Tem 開(kāi)頭后一個(gè)非數(shù)字符的 py 文件
    for fname in glob.glob("Tem[!0-9].py"):
        print(fname)
     
    windowns下
    file = glob.glob(r'D:\logs\*\*'

    zlib.crc32

    CRC32 算法概述 CRC 全稱(chēng) Cyclic Redundancy Check,又叫循環(huán)冗余校驗(yàn)。和 md5 碼一樣都是 hash 的。當(dāng)兩個(gè)文件內(nèi)容的 CRC32 相同的時(shí)候,這個(gè)文件也就是相同的。反之,兩個(gè)文件就是不同的文件。

    def crc32(file_path):
        with open(file_path, 'rb') as fh:
            hash = 0
            while True:
                s = fh.read(65536)
                if not s:
                    break
                hash = zlib.crc32(s, hash)
            return "%08X" % (hash & 0xFFFFFFFF)

    去重復(fù)

    看到這里,想必都明白如何去重復(fù)文件了:

    1. 用 glob.glob 掃描所有文件,

    2. 把文件的 crc32 值放入字典中,

    3. 找到字典中已經(jīng)存在的 crc32 值的key,刪除當(dāng)前文件。

    import os
    import zlib
    import glob
     
    def scanning_floder(glob_path):
        
        crc32Dict = {}
        for fname in glob.glob(glob_path, recursive=True):
            if os.path.isfile(fname):
                crc = crc32(fname)
                if crc in crc32Dict:
                    print('已經(jīng)存在文件:' + crc32Dict.get(crc))
                    print('重復(fù)文件:' + fname)
                    print('刪除文件:' + fname)
                    os.remove(fname)
                    print('')
                else:
                    crc32Dict[crc] = fname
     
    def crc32(file_path):
        with open(file_path, 'rb') as f:
            hash = 0
            while True:
                s = f.read(1024)
                if not s:
                    break
                hash = zlib.crc32(s, hash)
            return "%08X" % (hash & 0xFFFFFFFF)
     
    scanning_floder(r"C:\Users\xxxx\Documents\WeChat Files\xxxx\FileStorage\**\*")

    Python怎么解決手機(jī)qq微信內(nèi)存占用太多問(wèn)題

    關(guān)于“Python怎么解決手機(jī)qq微信內(nèi)存占用太多問(wèn)題”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI