问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python Windows垃圾文件清理

发布网友 发布时间:2022-04-23 06:44

我来回答

2个回答

懂视网 时间:2022-05-11 01:02

前言

大家应该都有所体会,在windows系统使用久了就会产生一些“垃圾”文件。这些文件有的是程序的临时文件,有的是操作记录或日志等。垃圾随着时间越积越多,导致可用空间减少,文件碎片过多,使得系统的运行速度受到一定影响。

而Mac系统和Linux系统并不存在这类问题,所以只适用于windows

知识概要

某些缓存文件可以提高程序的执行速度,比如缓存 cookie、使用记录 recent、预读取 prefetch 等。所以清理临时文件并不代表系统运行就会变快,有时也可能变慢。

windows电脑中的垃圾文件及文件夹主要有哪些?

系统盘 %system% 下文件类型:

【临时文件(*.tmp)】

【临时文件(*._mp)】

【日志文件(*.log)】

【临时帮助文件(*.gid)】

【磁盘检查文件(*.chk)】

【临时备份文件(*.old)】

【Excel备份文件(*.xlk)】

【临时备份文件(*.bak)】

用户目录 %userprofile% 下文件夹

【COOKIE】 cookies*.*

【文件使用记录】 recent*.*

【IE临时文件】 Temporary Internet Files*.*

【临时文件文件夹】 Temp*.*

Windows 目录 %windir% 下文件夹

【预读取数据文件夹】 prefetch*.*

【临时文件】 temp*.*

获取文件地址

操作需要os模块,如获取工作目录:

import os
print os.getcwd() # 'E:PythonSourceleanr_py'

切换工作目录:

os.chdir('d://wamp')
print os.getcwd() # 'd:wamp'

获取系统盘符:

os.environ['systemdrive'] # 'C:'

获取用户目录:

os.environ['userprofile'] # 'C:UsersAdministrator'

获取 Windows 目录:

os.environ['windir'] # 'C:Windows'

遍历目录

要想遍历文件夹,需要用到 os.walk(top,topdown=True,onerror=None)

参数top表示需要遍历的顶级目录的路径。

参数topdown的默认值是“True”表示首先返回顶级目录下的文件,然后再遍历子目录中的文件。当topdown的值为"False"时,表示先遍历子目录中的文件,然后再返回顶级目录下的文件。

参数onerror默认值为"None",表示忽略文件遍历时的错误。如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历。

返回值:函数返回一个元组,含有三个元素。这三个元素分别是:每次遍历的路径名、路径下子目录列表、目录下文件列表。

for roots, dirs, files in os.walk('d://wamp', topdown=False)
 # roots 文件夹路径, dirs 该目录下的文件夹列表, files文件列表
 print roots # d://wamp
 print dirs # ['bin', 'www', 'alias']
 print files # ['wampmanage.conf', '1.txt']

判断是否垃圾文件

os.path.splitext() 可以对文件名进行切割

extension = os.path.splitext(r'aaabbccc.ddd') # ('aaabbccc', '.ddd')
if extension[1] in ['.tmp', '.bak']:
 print '是垃圾文件'

删除文件

删除文件与删除文件夹调用的是不同的函数。

# 删除文件
os.remove('d:temporary/test/test.txt')
 
# 删除文件夹
os.rmdir('d:temporary/test/empty')

os.rmdir 只能删除空文件夹,如果文件夹非空,则会报错。所以应该用:

shutil.rmtree('d:/dir1/dir2/aaa')

文件正在运行或者受到保护、当前账户没有足够权限时,删除会报错。

最后整理删除函数为:

def del_dir_or_file(root):
 try:
 if os.path.isfile(root):
 # 删除文件
 os.remove(root)
 print 'file: ' + root + ' removed'
 elif os.path.isdir(root):
 # 删除文件夹
 shutil.rmtree(root)
 print 'directory: ' + root + ' removed'
 except WindowsError:
 print 'failure: ' + root + " can't remove"

获取文件大小

# 显示文件夹(路径)大小,单位 bite
os.path.getsize('d://temporary/test') # 4096
 
# 文件大小
os.path.getsize('d://temporary/test/aaa.txt') # 135

完整程序

注意:由于牵涉到文件删除操作,请在动手前务必反复确认代码,万一导致什么重要文件被删.

务必确认!!!

务必确认!!!

务必确认!!!

import os
import json
import shutil
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']
# 获取 Windows 目录
WIN_DIR = os.environ['windir']
 
# 获取当前路径 os.getcwd() 'E:SoftwarePython27'
# 跳转至指定的文件目录 os.chdir('d://wamp')
# 获取系统盘符 os.environ['systemdrive'] 'C:'
# 获取用户目录 os.environ['userprofile'] 'C:UsersAdministrator'
# 获取 Windows 目录 os.environ['windir'] 'C:Windows'
def del_dir_or_file(root):
 try:
 if os.path.isfile(root):
 # 删除文件
 os.remove(root)
 print 'file: ' + root + ' removed'
 elif os.path.isdir(root):
 # 删除文件夹
 shutil.rmtree(root)
 print 'directory: ' + root + ' removed'
 except WindowsError:
 print 'failure: ' + root + " can't remove"
 
 
# 字节bytes转化kbmg
def formatSize(bytes):
 try:
 bytes = float(bytes)
 kb = bytes / 1024
 except:
 print("传入的字节格式不对")
 return "Error"
 if kb >= 1024:
 M = kb / 1024
 if M >= 1024:
 G = M / 1024
 return "%fG" % (G)
 else:
 return "%fM" % (M)
 else:
 return "%fkb" % (kb)
 
class DiskClean(object):
 def __init__(self):
 self.del_info = {}
 self.del_file_paths = []
 self.total_size = 0
 for k,v in del_extension.items():
 self.del_info[k] = dict(name = v, count = 0)
 
 
 def scan(self):
 for roots, dirs, files in os.walk(USER_PROFILE, topdown=False):
 # 生成并展开以 root 为根目录的目录树,参数 topdown 设定展开方式从底层到顶层
 for file_item in files:
 # 获取扩展名
 file_extension = os.path.splitext(file_item)[1]
 # print os.path.join(roots, file_item)
 if file_extension in self.del_info:
 # 文件完整路径
 file_full_path = os.path.join(roots, file_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):
 print json.dumps(self.del_info, indent=4, ensure_ascii=False)
 print '删除可节省:%s 空间' % formatSize(self.total_size)
 
 def delete_files(self):
 for i in self.del_file_paths:
 del_dir_or_file(i)
 
if __name__ == '__main__':
 cleaner = DiskClean()
 cleaner.scan()
 cleaner.show()
 if_del = raw_input('是否删除y/n:')
 if if_del == 'y':
 cleaner.delete_files()

总结

最近在看一些qt界面的内容。可以结合做一个有图形界面的程序 。

热心网友 时间:2022-05-10 22:10

你可以下载个360安全卫士啊,360安全卫士拥有查杀木马、清理插件、修复漏洞、电脑体检、电脑救援、保护隐私,电脑专家,清理垃圾,清理痕迹多种功能。追问这是程序题 好吧

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
全方位揭秘!大数据从0到1的完美落地之Linux磁盘、压缩解压命令_百度... 长期喝红茶可以减肥吗 长期喝红茶能不能减肥呢 经常喝红茶会不会长胖啊 ...都行最好是写完的或者更新很多很多了主要是玄幻悬疑类的 ...身上后变强的女强文,最好是有女扮男装的,像《傲风》这一类型完结的... 民法典中商标使用在先是否侵权 武汉市著名商标认定和保护办法第二十条 侵犯行为包括哪种形式 擅自买卖商标标识会被认为滥用商标吗 道家有哪些人物 五指山在哪? 电脑待机什么意思 五指山属于那个省 什么是电脑待机啊? 请问海南五指山在琼中县境内,那怎么还有一个五指山市?因何得名? 电脑待机什么意思啊? 谢谢了 五指山在三亚还是海口? 海南省五指山市在哪个市 一般的笔记本电脑待机时间为多长? 五指山在什么地方? 什么是电脑待机? 海口五指山市属于哪个区? 海南省五指山市的五指山在哪 电脑的待机和睡眠 五指山市属于哪个省哪个市 电脑上说的待机是什么意思 五指山市属于哪个省哪个市? 五指山在哪个省 海口五指山市属于哪个区 电脑待机是什么意思? python怎么制作垃圾清理程序 python如何清理内存 使用pythonWin的时候怎么清空控制台的内容 如何清除Windows 系统所有垃圾啊? wifi信号满格有个感叹号是怎么回事 怎么样彻底清除电脑中的python 如何使用win8.1自带命令清除系统冗余垃圾 wifi有个叹号不能上网怎么办? 商场里面用的什么空调?是怎么做到每个角落都冬暖夏凉的? 请问一下大型中央空调的结构和原理 空调机的原理及原理图? 商场大型中央空调室内机7线接线方法? 请空调高手解释空调系统图 一般大型商场选择中央空调系统要注意什么 大型购物中心 商场 中央空调采用什么系统 请问下图中的中央空调系统图符号都代表什么含义 大型商场中央空调怎么做能源管理 大型商场用什么类型的中央空调? 电脑带耳机放音乐玩游戏怎样让别人听到我放的音乐? 电脑放歌怎么让语音的朋友听到,还能听到我说话?