效果
刚写的脚本,自动删除电脑中的node_modules文件或者其他文件。
支持配置,可指定目录进行扫描,将一些老旧项目中的依赖进行清空。
快速清理了一下,多出了4个G,还是挺舒服的。
起因
电脑容量比较小,只有120G,经常要清硬盘。
清理的比较多的是微信的缓存文件。今天发现代码也占了挺大的空间,平时写前端和Node.js稍微多些,代码不会占用多大的容量,所以应该是项目的图片资源和node_modules的问题。
查了下,还确实是。虽说很多项目都很老了,但如果因为电脑容量的原因,而直接把整个代码删了也有点可惜。所以不如批量的把这些依赖给清空一下。
如果一个个手动点击删除,比较麻烦。即使这次手动删完了,过段时间还得手动来一次。
所以干脆写个脚本,让脚本来做这个事情会比较好些。而且改下参数,下次可以应用到别的场景,或者加一些前置条件,也能做更多的事。
代码
import os
import time
import shutil
# 脚本名称:autoDelete.py
# 脚本目的:自动删除指定文件夹下的相关文件夹 如批量删除node_modules依赖
def get_dirsize(dirPath):
size = 0
for root, dirs, files in os.walk(dirPath):
for file in files:
try:
name = os.path.join(root, file)
temp = os.path.getsize(name)
size += temp
except IOError:
error = "文件异常"
return size / (1024*1024)
def auto_delete(file_dir,target,days):
sum_size = 0
for root, dirs, files in os.walk(file_dir):
# 获取所有的目录
for dir in dirs:
if dir == target:
abs_dir = os.path.join(root,dir)
# 没必要扫子级的node_modules
if(abs_dir.count(target) > 1):
break
diff_time = (time.time() - os.path.getmtime(abs_dir))/60/60/24
size = get_dirsize(abs_dir)
if diff_time > days:
# 这行是清空文件夹的代码,建议先运行命令扫一遍,确保扫出来的文件都可以删除后,再取消注释。
# shutil.rmtree(abs_dir)
print("已经删除:%s"%(abs_dir))
print("文件夹大小:%.2fMB"%(size))
print("上次更新时间距离现在已经过去%.2f天"%(diff_time))
print("--------")
sum_size += size
print("已自动删除%d天内未更新的%s文件夹,共节省%.2fMB空间"%(days,target,sum_size))
# 输入目录地址
root = "/Users/zengzhiqiang/Desktop"
# 输入文件夹名称
target = "node_modules"
# 最近300天修改过的文件夹 不删除node_modules
days = 300
auto_delete(root,target,days)
整体的逻辑还是比较简单的,直接扫目录下的所有文件,找到对应的文件夹,符合给出的条件,就可以执行删除。
这里的target="node_modules"
,也可以改为其他的,比如"=logs"
,这样就可以删除一些日志文件。
或者是target="assets",days=365
,删除太长时间没有更新的老旧资源文件。
最后
这种脚本,代码还是比较简单的。
这个文章,也只是给大家抛个砖,希望能拓展一下思路,互相发散。以后遇到重复性的点点点问题,说不定可以试试写个脚本。
当然,最直接的解决方法,其实是换个电脑,或者是谷歌一下,如何快速的清空xxx文件。
附上GitHub地址:https://github.com/qiangzi772...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。