使用python开机删除文件

每天因为要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()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,862评论 19 139
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 100,930评论 9 468
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 13,557评论 2 33
  • 这是我这段时间写的关于Mac Finder的一系列知识和操作技巧,现在整理出来,希望大家能够喜欢。我也将会继续奉献...
    Mac高级玩家阅读 117,415评论 11 236
  • 越简单的颜色,越是能表达自己的内心 所有的情感都在眼神……
    云上之人阅读 246评论 0 0

友情链接更多精彩内容