缓存文件清理小程序

前言

哈罗!大家好呀,我是落枕!
最近突发奇想,想要整一个自动缓存清理程序,因为很多人都在用 广告软件 杀毒软件360清除缓存,秉持着 造福大众 绝对不用360的心理,一个这个,不说废话了,我们开干!


环境准备

编辑器:pycharm64
运行环境:python3.7.0
系统环境:win7(windows7以上应该都可以)


初步分析

这个项目的关键点就在于要找到缓存文件夹
看过抖音 某些营销号 的朋友们应该知道,系统缓存文件夹,额,是输入命令:

%temp%

于是乎,我输入了一下,查找缓存文件的位置
windows运行框
然后我发现我们的缓存文件夹路径是酱紫的:

C:\Users\xxxxxxx\AppData\Local\Temp

(我把计算机名称换成了x)
也就是说我的缓存文件位置是:

C:\Users\[computer name]\AppData\Local\Temp

咳咳,这里说一下,这个可能只适合我的电脑[皮]
那么文件目录找到了我们就可以开始操作啦!


代码编辑

导库

这个项目不需要第三方库
我们需要用到的库有:

os:删除文件
shutil:删除文件夹
time
tkinter.filedialog:可让用户自己选择缓存文件夹
socket:获取用户主机名
import os
import shutil
from time import time, sleep
from tkinter.filedialog import askdirectory
import socket

主体

首先,我们要获取用户主机的名字
然后输出这个名字
可以用到方法socket.gethostname()

name = socket.gethostname()
name = name.split("-")
del(name[-1])
print(f"您的计算机名为:{socket.gethostname()}")

之所以加上del(name[-1])是因为我获取到的名字后面有一个-PC我要把它去掉


接着我们用主机名确认缓存文件夹的目录并让用户确认进入程序:

path = f"C://Users//{name[-1]}//AppData//Local//Temp"
enter = input(f"-欢迎来到缓存清理中心,是否开始清理?\n-清理目标目录:{path}-\n(Y/n/目录不正确,重新选择c):")

然后判断用户的行为:

if enter.upper() == "Y":
	···
elif enter.upper() == "C":
	···
else:
	···

用户确认进入

我们就可以加上程序代码了
首先是获取目录下的所有文件

	files1 = os.listdir(path)
    print(f"找到文件(夹):{files1}")

如果愿意,可以加上一个计时

	a = time()
	···
	b = time()

接着开始删除文件和文件夹:

    for file in files1:
        file_path = path + "//" + file
        try:
            os.remove(file_path)
            print(f"-已经删除文件(文件名:{file})-")
        except PermissionError:
            continue

    files2 = os.listdir(path)
    for file in files2:
        file_path = path + "//" + file
        try:
            shutil.rmtree(file_path)
            print(f"-已经删除文件夹(文件夹名:{file})-")
        except NotADirectoryError:
            continue
        except PermissionError:
            continue

在两个for循环里面要加上try-except语句,应为有的缓存是没办法删除的,会报错
第二个for循环要检查NotADirectoryError,因为程序在删除的时候会找到第一轮循环没有删除的文件,而用rmtree()方法再次删除会报错


最后输出结果即可

    print(f"\n-总共用时{b-a}秒-")
    print("-已经删除缓存文件夹中非共享文件与非使用文件-")
    print("\n-60秒后自动退出进程-")
    sleep(60)

用户需要重新选择文件夹

这一步很简单,只要加上文件夹选择框即可~

    os.system("cls")
    print("-请选择目录-\n(缓存目录位于:C:/Users/[computer name]/AppData/Local/Temp,或者在命令提示符中输入%temp%即可):")
    choosepath = askdirectory(title="选择缓存文件夹的位置")
    if choosepath == "":
        choosepath = "C://Users//zhengy1//AppData//Local//Temp"
        print(f"-检测到您没有选择任何文件夹,已经为您选择默认文件夹:{choosepath}-\n-5秒后进入下一个页面-")
        sleep(5)

加上一层条件判断是因为放置用户没有选择任何文件夹然后误删系统文件
接下来的内容就差不多了

    os.system("cls")
    choose_enter = input(f"-是否开始清理?-\n-清理目标目录:{choosepath}-\n(Y/n):")
    if choose_enter.upper() == "Y":
        files1 = os.listdir(path)
        print(f"找到文件(夹):{files1}")
        a = time()
        for file in files1:
            file_path = path + "//" + file
            try:
                os.remove(file_path)
                print(f"-已经删除文件(文件名:{file})-")
            except PermissionError:
                continue

        files2 = os.listdir(path)
        for file in files2:
            file_path = path + "//" + file
            try:
                shutil.rmtree(file_path)
                print(f"-已经删除文件夹(文件夹名:{file})-")
            except NotADirectoryError:
                continue
            except PermissionError:
                continue
        b = time()

        print(f"-总共用时{b-a}秒-")
        print("\n-已经删除缓存文件夹中非共享文件与非使用文件-")
        print("\n-60秒后自动退出进程-")
        sleep(60)
    else:
        print("\n-10秒后退出进程-")
        sleep(10)

用户退出程序

很简单,补一下else语句即可

else:
    print("\n-10秒后退出进程-")
    sleep(10)

最后亮一下源代码:

# !/usr/bin/python3
# -*- coding: utf-8 -*-
import os
import shutil
from time import time, sleep
from tkinter.filedialog import askdirectory
import socket
name = socket.gethostname()
name = name.split("-")
del(name[-1])
print(f"您的计算机名为:{socket.gethostname()}")
path = f"C://Users//{name[-1]}//AppData//Local//Temp"
enter = input(f"-欢迎来到缓存清理中心,是否开始清理?\n-清理目标目录:{path}-\n(Y/n/目录不正确,重新选择c):")
if enter.upper() == "Y":
    files1 = os.listdir(path)
    print(f"找到文件(夹):{files1}")
    a = time()
    for file in files1:
        file_path = path + "//" + file
        try:
            os.remove(file_path)
            print(f"-已经删除文件(文件名:{file})-")
        except PermissionError:
            continue

    files2 = os.listdir(path)
    for file in files2:
        file_path = path + "//" + file
        try:
            shutil.rmtree(file_path)
            print(f"-已经删除文件夹(文件夹名:{file})-")
        except NotADirectoryError:
            continue
        except PermissionError:
            continue
    b = time()

    print(f"\n-总共用时{b-a}秒-")
    print("-已经删除缓存文件夹中非共享文件与非使用文件-")
    print("\n-60秒后自动退出进程-")
    sleep(60)
elif enter.upper() == "C":
    os.system("cls")
    print("-请选择目录-\n(缓存目录位于:C:/Users/[computer name]/AppData/Local/Temp,或者在命令提示符中输入%temp%即可):")
    choosepath = askdirectory(title="选择缓存文件夹的位置")
    if choosepath == "":
        choosepath = "C://Users//zhengy1//AppData//Local//Temp"
        print(f"-检测到您没有选择任何文件夹,已经为您选择默认文件夹:{choosepath}-\n-5秒后进入下一个页面-")
        sleep(5)
    os.system("cls")
    choose_enter = input(f"-是否开始清理?-\n-清理目标目录:{choosepath}-\n(Y/n):")
    if choose_enter.upper() == "Y":
        files1 = os.listdir(path)
        print(f"找到文件(夹):{files1}")
        a = time()
        for file in files1:
            file_path = path + "//" + file
            try:
                os.remove(file_path)
                print(f"-已经删除文件(文件名:{file})-")
            except PermissionError:
                continue

        files2 = os.listdir(path)
        for file in files2:
            file_path = path + "//" + file
            try:
                shutil.rmtree(file_path)
                print(f"-已经删除文件夹(文件夹名:{file})-")
            except NotADirectoryError:
                continue
            except PermissionError:
                continue
        b = time()

        print(f"-总共用时{b-a}秒-")
        print("\n-已经删除缓存文件夹中非共享文件与非使用文件-")
        print("\n-60秒后自动退出进程-")
        sleep(60)
    else:
        print("\n-10秒后退出进程-")
        sleep(10)
else:
    print("\n-10秒后退出进程-")
    sleep(10)

结语

今天的分享就到这里啦,喜欢的朋友记得三连一下哇!
如果各位大大发现了什么问题,在评论区里说一下喔!
886~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fkdlz-疯狂的落枕ὢ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值