利用python對Mac中的微信和企業(yè)微信等文件清理和備份

今天準(zhǔn)備把Mac的系統(tǒng)升級一下,忽然發(fā)現(xiàn)沒有足夠的升級空間,一頓操作猛如虎后,發(fā)現(xiàn)空間還是……??,也試過按照網(wǎng)上的一些教程,下載了檸檬等清理軟件,發(fā)現(xiàn)能清理出來一些空間,但是對于升級需要的空間來說,還是……最后只能祭出萬能的python。這里記錄一下,并且提供源碼,有需要的拿走,不過請勿用于商用。
1、首先檸檬還是一個好工具,因?yàn)檫@里節(jié)省了不少時間,首先用檸檬做一下簡單的清理,接下來用大招啦
使用檸檬的磁盤空間分析,這是一個非常棒的工具,可以可視化看到你的空間都在哪里被占用了


image.png

分析后可以看到,大部分的空間都是被用戶這個文件夾占用了


image.png

我們當(dāng)然是先找胖的下手啦通過層層的分析后,發(fā)現(xiàn)我的空間都被小馬哥吃了??
image.png

image.png

這里前面幾個都是吃磁盤的大戶(這里是我已經(jīng)優(yōu)化后的截圖,優(yōu)化前占用磁盤空間更加多),占用空間比較多的都是聊天軟件(??工作原因,要和阿里還有騰訊的人溝通,還有公司自己用的企業(yè)微信,所以磁盤都被微信,企業(yè)微信,釘釘,QQ這些吃了好多),這里以企業(yè)微信為例,看看里面都有啥
image.png

“Upgrade”里面放的企業(yè)微信自己升級的時候的下載的文件,這個文件夾下面的可以直接清空,因?yàn)橄嘈胚@些成熟的軟件,會自己下載,這里只是一個歸檔的作用,不過這里不是主要的,這里可以看到Library和Documents兩個才是大戶,本著吃大戶的原則,我們進(jìn)入這兩個目錄里面翻了一遍,??好可怕,發(fā)現(xiàn)聊天過程中的圖片,語音,視頻還有文件等都在這里面。而這里的文件我們一些時候還是需要用的,因?yàn)榍謇砗笪⑿诺牧奶煊涗浘痛虿婚_這個文件了。但是不解決這個問題,我們的空間就釋放不出來,所以最好的辦法是備份下。到了這里,我們就有思路啦,把幾個聊天軟件下的這些文件都備份起來,需要的時候到備份里面去找就好(還有一個辦法是備份的過程中,記錄下來備份前的路徑,升級結(jié)束后再還原回去,不過我自己沒這個需要,所以這里沒有采用)。下面的過程就非常簡單了,用python把這些目錄下,做一個遍歷,把自己需要備份的文件備份到移動硬盤下就??了。下面上代碼:

#!/usr/bin/python3

import os
import shutil

#需要掃描的路徑
rootpath='/Users/xxxx/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/2.0b4.0.9/33eab142f8eb6af75af3670923e57480/Message/MessageTemp' 
# rootpath='/Users/xxxxx/Library/Containers/com.tencent.WeWorkMac/Data/Library/Application Support/WXWork/Data'
#備份的root路徑
bakroot='/Volumes/disk/AutoBackup'
#掃描的文件類型
filesname=['.png','.ppt','.pptx','.doc','.docx','.csv','.txt','.jpg','.mp4','.avi','.xlsx','.xls','.wps','.pdf','jpeg','.mov','.bmp','.gif','.rar','.zip','.gz']

def run():
   dirs= getdirs(rootpath)
#    for dir in dirs:
#        print(dir)

#獲取掃描路徑下的文件,返回一個list
def getfiles(rootpath):
    for rootpath,dirs, files in os.walk(rootpath, topdown=False):
        for name in files:
            print(os.path.join(rootpath, name))
    return files

#判斷目錄是否存在,不存在則創(chuàng)建
def makedirs(path,dir):
    if os.path.exists(path+'/'+dir):
        print('目標(biāo)文件夾已經(jīng)存在')
    else:
        os.makedirs(path+'/'+dir)

#獲取掃描路徑下的子文件夾,返回一個list
def getdirs(rootpath):
    for rootpath, dirs,files in os.walk(rootpath, topdown=False):
        for name in dirs:
            dirpath=os.path.join(rootpath, name)
            print(dirpath)
            # 獲取文件夾下的文件列表
            files=getfiles(dirpath)
            for file in files:
                case_paht = os.path.splitext(file)[1]
                if case_paht in filesname:
                    print('找到符合要求的文件')
                    # 判斷這個類型的目標(biāo)文件夾是否存在,不存在則創(chuàng)建
                    makedirs(bakroot,case_paht)
                    #移動文件到目標(biāo)文件夾
                    newfile=file.replace('&','')#/?~^&*
                    try:
                        shutil.move(os.path.join(dirpath, file),os.path.join(bakroot+'/'+case_paht, newfile))
                    except:
                        print('')
                else:
                    print("文件不符合目標(biāo)文件")
    return dirs
    
run()

上面大家可以根據(jù)自己的實(shí)際情況修改為自己的路徑以及字節(jié)需要備份的路徑和掃描的文件類型。


image.png

運(yùn)行后,妥妥的幾個G的空間又出來啦??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容