首頁 > 軟體

Python幫你解決手機qq微信記憶體佔用太多問題

2022-02-15 19:00:29

導語:

哈嘍,哈嘍~大家有沒有遇到過這種情況,手機用著用著沒有記憶體了,一到設定裡面一看。

微信和 QQ 10G!

啊這。。。。。就離譜!好說,好說,設定中都有一個清除資料的功能,一鍵下去記憶體暫時都回來了,但是寶,你確定你微信和QQ中的資訊都沒用嗎?

​下面能小編就用 Python 寫個刪除重複檔案的指令碼清理這些微信和QQ空間。確保在清除記憶體的時候,你的重要資訊還在。

正文:

glob 模組

glob 模組非常簡單,就是用來查詢檔案和資料夾。查詢檔案只用到三個匹配符:"*", "?", "[]"。

萬用字元 功能

  • *:匹配0或多個字元
  • **:匹配所有檔案,目錄,子目錄和子目錄裡面的檔案
  • ?:匹配一個字元,這裡與正規表示式? (正則?匹配前面表示式0次或者1次)
  • []:匹配指定範圍內的字元,如: [1-9]匹配1至9內的字元
  • [!]:匹配不在指定範圍內的字元

glob方法

這個方法返回所有匹配的檔案路徑列表

# 當前路徑下所有 py 檔案
for fname in glob.glob("**/*.py",recursive=True):
    print(fname)
 
# 當前路徑檔案 py 下 py 檔案
for fname in glob.glob("py/*.py"):
    print(fname)
 
# 單字萬用字元 ?,當前路徑檔案下以 Tem 開頭後有一個字元資料夾
for fname in glob.glob("Tem?"):
    print(fname)
 
# 範圍萬用字元[],當前路徑檔案下以 Tem 開頭後一個數位符的 py 檔案
for fname in glob.glob("Tem[0-9].py"):
    print(fname)
 
# 範圍萬用字元[!],當前路徑檔案下以 Tem 開頭後一個非數位符的 py 檔案
for fname in glob.glob("Tem[!0-9].py"):
    print(fname)
 
windowns下
file = glob.glob(r'D:logs**'

zlib.crc32

CRC32 演演算法概述 CRC 全稱 Cyclic Redundancy Check,又叫回圈冗餘校驗。和 md5 碼一樣都是 hash 的。當兩個檔案內容的 CRC32 相同的時候,這個檔案也就是相同的。反之,兩個檔案就是不同的檔案。

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)

去重複

看到這裡,想必都明白如何去重複檔案了:

1. 用 glob.glob 掃描所有檔案,

2. 把檔案的 crc32 值放入字典中,

3. 找到字典中已經存在的 crc32 值的key,刪除當前檔案。

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('已經存在檔案:' + crc32Dict.get(crc))
                print('重複檔案:' + 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:UsersxxxxDocumentsWeChat FilesxxxxFileStorage***")    

總結

本篇介紹了 glob 模組的用法和 crc32 值的計算,大家學廢了嗎

到此這篇關於Python幫你解決手機qq微信記憶體佔用太多問題的文章就介紹到這了,更多相關Python qq微信記憶體佔用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com