效果

刚写的脚本,自动删除电脑中的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...


上啊比卡丘
660 声望41 粉丝