今天准备把Mac的系统升级一下,忽然发现没有足够的升级空间,一顿操作猛如虎后,发现空间还是……😱,也试过按照网上的一些教程,下载了柠檬等清理软件,发现能清理出来一些空间,但是对于升级需要的空间来说,还是……最后只能祭出万能的python。这里记录一下,并且提供源码,有需要的拿走,不过请勿用于商用。
1、首先柠檬还是一个好工具,因为这里节省了不少时间,首先用柠檬做一下简单的清理,接下来用大招啦
使用柠檬的磁盘空间分析,这是一个非常棒的工具,可以可视化看到你的空间都在哪里被占用了
分析后可以看到,大部分的空间都是被用户这个文件夹占用了
我们当然是先找胖的下手啦通过层层的分析后,发现我的空间都被小马哥吃了😱
这里前面几个都是吃磁盘的大户(这里是我已经优化后的截图,优化前占用磁盘空间更加多),占用空间比较多的都是聊天软件(😭工作原因,要和阿里还有腾讯的人沟通,还有公司自己用的企业微信,所以磁盘都被微信,企业微信,钉钉,QQ这些吃了好多),这里以企业微信为例,看看里面都有啥
“Upgrade”里面放的企业微信自己升级的时候的下载的文件,这个文件夹下面的可以直接清空,因为相信这些成熟的软件,会自己下载,这里只是一个归档的作用,不过这里不是主要的,这里可以看到Library和Documents两个才是大户,本着吃大户的原则,我们进入这两个目录里面翻了一遍,😱好可怕,发现聊天过程中的图片,语音,视频还有文件等都在这里面。而这里的文件我们一些时候还是需要用的,因为清理后微信的聊天记录就打不开这个文件了。但是不解决这个问题,我们的空间就释放不出来,所以最好的办法是备份下。到了这里,我们就有思路啦,把几个聊天软件下的这些文件都备份起来,需要的时候到备份里面去找就好(还有一个办法是备份的过程中,记录下来备份前的路径,升级结束后再还原回去,不过我自己没这个需要,所以这里没有采用)。下面的过程就非常简单了,用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
#判断目录是否存在,不存在则创建
def makedirs(path,dir):
if os.path.exists(path+'/'+dir):
print('目标文件夹已经存在')
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('找到符合要求的文件')
# 判断这个类型的目标文件夹是否存在,不存在则创建
makedirs(bakroot,case_paht)
#移动文件到目标文件夹
newfile=file.replace('&','')#/?~^&*
try:
shutil.move(os.path.join(dirpath, file),os.path.join(bakroot+'/'+case_paht, newfile))
except:
print('')
else:
print("文件不符合目标文件")
return dirs
run()
上面大家可以根据自己的实际情况修改为自己的路径以及字节需要备份的路径和扫描的文件类型。
运行后,妥妥的几个G的空间又出来啦😄