垃圾清理软件源码
最近闲着无聊,打开家里的笔记本电脑,发现卡的要死。
于是乎,就自己用Python写了一个垃圾清理软件。
开源是一种美德,我要开源。 dog
好了,不扯了,上代码:
import sys,os,easygui,datetime
logs=open('log.txt','w+',encoding='UTF-8')
a=open('dism.ini', 'r',encoding='UTF-8')
dism=a.read()
a.close()
easygui.msgbox(dism)
b=open('dism2.ini', 'r',encoding='UTF-8')
dism2=b.read()
b.close()
easygui.msgbox(dism2)
ask=easygui.enterbox('你是否同意(y/n;Y/N):')
if ask == 'n' or ask == 'N' or ask==None or ask=='':
logs.write(str(datetime.datetime.now())+':'+'OOPS!You exit it!'+'\n')
logs.close()
sys.exit(1)
logs.write(str(datetime.datetime.now())+':'+'OK!'+'\n')
msg = "你想清理什么?"
title = "主界面"
af = ["清理系统超过一个月的日志文件 和 文件 文件夹", "清理系统垃圾"]
A = easygui.choicebox(msg, title, af)
logs.write(str(datetime.datetime.now())+':'+str(A)+'\n')
if str(A)=="清理系统超过一个月的日志文件 和 文件 文件夹":
def printToFile(filename, msg):
fd = open(filename, "a")
fd.write("\n" + msg + "\n")
fd.close()
def main():
log_file = "log.txt"
printToFile(log_file, "Files Deleted on: /mnt/builds_mobile/buildbrain/automatic")
findCmd = "find /mnt/builds_mobile/buildbrain/automatic -type f \( ! -iname '*.xml' \) -mtime +25 | xargs rm -rfv >> %s" % (
log_file)
os.system(findCmd)
printToFile(log_file, "Files Deleted on: /mnt/builds_mobile/buildbrain/ondemand")
findCmd = "find /mnt/builds_mobile/buildbrain/ondemand -type f \( ! -iname '*.xml' \) -mtime +25 | xargs rm -rfv >> %s" % (
log_file)
os.system(findCmd)
printToFile(log_file, "Files Deleted on: /mnt/builds_mobile/buildbrain/virtual")
findCmd = "find /mnt/builds_mobile/buildbrain/virtual -type f \( ! -iname '*.xml' \) -mtime +5 | xargs rm -rfv >> %s" % (
log_file)
os.system(findCmd)
# Delete XML files after 60 days
findCmd = "find /mnt/builds_mobile/buildbrain/automatic -type f -mtime +60 | xargs rm -rfv >> %s" % (log_file)
os.system(findCmd)
findCmd = "find /mnt/builds_mobile/buildbrain/ondemand -type f -mtime +60 | xargs rm -rfv >> %s" % (log_file)
os.system(findCmd)
findCmd = "find /mnt/builds_mobile/buildbrain/virtual -type f -mtime +60 | xargs rm -rfv >> %s" % (log_file)
os.system(findCmd)
# to delete the logs older than 25 days older
printToFile(log_file, "Files Deleted on: /mnt/qvslogs/")
findCmd = "find /mnt/qvslogs/ -type f -mtime +25 | xargs rm -rfv >> %s" % (log_file)
os.system(findCmd)
printToFile(log_file, "Deleting EMPTY directories.")
findCmd = "find /mnt/builds_mobile/buildbrain/automatic -type d -empty | xargs rm -rfv >> %s" % (log_file)
os.system(findCmd)
findCmd = "find /mnt/builds_mobile/buildbrain/ondemand -type d -empty | xargs rm -rfv >> %s" % (log_file)
os.system(findCmd)
findCmd = "find /mnt/builds_mobile/buildbrain/virtual -type d -empty | xargs rm -rfv >> %s" % (log_file)
os.system(findCmd)
findCmd = "find /mnt/qvslogs/ -type d -empty | xargs rm -rfv >> %s" % (log_file)
os.system(findCmd)
findCmd = "find /mnt/builds_mobile_public/AutosanDetails/ -type d -empty | xargs rm -rfv >> %s" % (log_file)
os.system(findCmd)
# Remove files with 0 size from /mnt/builds_mobile/AutosanDetails
printToFile(log_file, "Deleting files with ZERO size.")
findCmd = "find /mnt/builds_mobile/AutosanDetails/ -type f -size 0| xargs rm -rfv >> %s" % (log_file)
os.system(findCmd)
findCmd = "find /mnt/builds_mobile_public/AutosanDetails/ -type f -size 0| xargs rm -rfv >> %s" % (log_file)
os.system(findCmd)
# Remove files older than 3 months from /mnt/builds_mobile/AutosanDetails
printToFile(log_file, "Files Deleted on: /mnt/builds_mobile/AutosanDetails")
findCmd = "find /mnt/builds_mobile/AutosanDetails/ -type f -mtime +90| xargs rm -rfv >> %s" % (log_file)
os.system(findCmd)
# Remove files older than 3 months from /mnt/builds_mobile_public/AutosanDetails/
printToFile(log_file, "Files Deleted on: /mnt/builds_mobile_public/AutosanDetails/")
findCmd = "find /mnt/builds_mobile_public/AutosanDetails/ -type f -mtime +90| xargs rm -rfv >> %s" % (log_file)
os.system(findCmd)
if (__name__ == "__main__"):
main()
logs.write('\n')
elif str(A)=="清理系统垃圾":
del_extension = {
'.tmp': '临时文件',
'._mp': '临时文件_mp',
'.log': '日志文件',
'.gid': '临时帮助文件',
'.chk': '磁盘检查文件',
'.old': '临时备份文件',
'.xlk': 'Excel备份文件',
'.bak': '临时备份文件bak'
}
del_userprofile = ['cookies', 'recent', 'Temporary Internet Files', 'Temp']
del_windir = ['prefetch', 'temp']
SYS_DRIVE = os.environ['systemdrive'] + '\\'
USER_PROFILE = os.environ['userprofile']
WIN_DIR = os.environ['windir']
def del_dir_or_file(root):
try:
if os.path.isfile(root):
os.remove(root)
print("file", root, "removed")
elif os.path.isdir(root):
os.rmdir(root)
print("dir", root, "removed")
except WindowsError:
print("failure", root, "can't remove")
def formatSize(b):
try:
kb = b // 1024
except:
print("传入字节格式不对")
return "Error"
if kb > 1024:
M = kb // 1024
if M > 1024:
G = M // 1024
return "%dG" % G
else:
return "%dM" % M
else:
return "%dkb" % kb
class DiskClean(object):
def __init__(self):
self.del_info = {}
self.del_file_paths = []
self.total_size = 0
for i, j in del_extension.items():
self.del_info[i] = dict(name=j, count=0)
def scanf(self):
for roots, dirs, files in os.walk(USER_PROFILE):
for files_item in files:
file_extension = os.path.splitext(files_item)[1]
if file_extension in self.del_info:
file_full_path = os.path.join(roots, files_item)
self.del_file_paths.append(file_full_path)
self.del_info[file_extension]['count'] += 1
self.total_size += os.path.getsize(file_full_path)
def show(self):
re = formatSize(self.total_size)
for i in self.del_info:
print(self.del_info[i]["name"], "共计", self.del_info[i]["count"], "个")
return re
def delete_files(self):
for i in self.del_file_paths:
print(i)
del_dir_or_file(i)
logs.write(str(i) + '\n')
if __name__ == "__main__":
print("初始化清理垃圾程序")
cleaner = DiskClean()
print("开始扫描垃圾文件请耐心等待\n")
cleaner.scanf()
print("扫描成功,结果如下")
re = cleaner.show()
cleaner.delete_files()
easygui.msgbox('OK!')
logs.close()
dism.ini和dism2.ini的内容是:
法律资料
log.txt的内容是:
日志
注意:
我是在Python3.9.1中写的,注意版本差异!