使用python开机删除文件
admin
2023-07-30 20:46:57
0

每天因为要debug的原因,需要下载很多log,久而久之,log越来越多,不仅占用空间,而且也很难查找新下载的log,下午难得空闲,用python写个小程序删除这些垃圾文件.

1. 思路

基本上下载的log都会固定放在那几个folder中,下载的log文件名字也基本雷同,所以只需要search这几个folder下的文件,然后名字有keyword的就直接删除即可.

另外,因为之后肯定不会记得,所以还需要可以在每次开机的时候自动来run,做到悄无声息哈.

2. 编码

思路有了,下来开始编码.

首先怎么才能获取目录和目录下的文件呢?Google一番后,发现还是比较简单,上代码,

files_list = os.listdir(\"C:\\Users\\mtk54273\\Desktop\\log\")
os.chdir(folder)

这样files_list就获取到了log folder下的所有folder和files,这里os.chdir(folder)的目的是为了之后的操作,原因是files_list获取并不是绝对路径,因此需要切到对应的路径下,好比

cd C:\\Users\\mtk54273\\Desktop\\log

下来就是如何判断files_list中的文件是否是log文件,这个最初的想法是配置一个config文件,然后读取,不过发现意义不大,直接写到代码还来得快,也许之后可以再来扩充.

def is_log_file(file_name):
    if \"aee\" in file_name:
        return True
    if \"mobile\" in file_name:
        return True
    if \"Screenshot\" in file_name:
        return True
    if \"db\" in file_name:
        return True
    return False

这里可以添加任意的关键字,作为想要删除的对象,这种做法其实不推荐了,不过对于这种轻量级的程序,也不一定要做的那么高大上哈.

再加下来就是具体的删除了,这个用python还是很简单的,唯一需要注意是要区分是否是目录,因为删除目录需要用到不同的方法.

def delete_file(file_name):
    if (os.path.isdir(file_name)):
                # 删除目录需要用shutil来做
        shutil.rmtree(file_name)
    else:
        os.remove(file_name)

最后,就是怎么能够在开机的时候启动了,Google一番,最简单的方式就是利用windows自带的启动功能

首先创建一个快捷方式,然后把快捷方式直接放到启动文件夹下即可,找不到的可以在开始->所有程序->启动中找到.

至此大功告成,跑了一下,第一遍有些慢,因为垃圾log文件有多有大,不过之后应该会好很多哈!

3. 提高

这里其实有几个地方还有待提高,待日后有时间再来完善:

  • 目标文件夹可以定义在config文件,这样不需要每次改代码
  • 电脑关机很少,这样开机自启动似乎意义就不大,最好有个定时器,不重启也能定时启动
  • 删除的log文件有些可能还需要,所以删除的时候可以有个判断,比如是一周没在使用的再删除

最后贴上完整代码,供参考:

import os
import shutil

def delete_log_files():
    folders = [\"C:\\Users\\mtk54273\\Desktop\\log\",
              \"D:\\DeskTop\\Temp Download\\Temp Logs\"
              ]
    for folder in folders:
        delte_log_from_folder(folder)


def delte_log_from_folder(folder):
    files_list = os.listdir(folder)
    os.chdir(folder)
    for file_name in files_list :
        if(is_log_file(file_name) == True):
            delete_file(file_name)

def is_log_file(file_name):
    if \"aee\" in file_name:
        return True
    if \"mobile\" in file_name:
        return True
    if \"Screenshot\" in file_name:
        return True
    return False


def delete_file(file_name):
    if (os.path.isdir(file_name)):
        shutil.rmtree(file_name)
    else:
        os.remove(file_name)


delete_log_files()

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...