前言

大家应该都有所体会,在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:\\PythonSource\\leanr_py'
切换工作目录:
os.chdir('d://wamp')
print os.getcwd() # 'd:\\wamp'
获取系统盘符:
os.environ['systemdrive'] # 'C:'
获取用户目录:
os.environ['userprofile'] # 'C:\\Users\\Administrator'
获取 Windows 目录:
os.environ['windir'] # 'C:\\Windows'
遍历目录
要想遍历文件夹,需要用到 os.walk(top,topdown=True,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'aaa\bbb\ccc.ddd') # ('aaa\\bbb\\ccc', '.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:\\Software\\Python27'
# 跳转至指定的文件目录 os.chdir('d://wamp')
# 获取系统盘符 os.environ['systemdrive'] 'C:'
# 获取用户目录 os.environ['userprofile'] 'C:\\Users\\Administrator'
# 获取 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转化kb\m\g
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界面的内容。可以结合做一个有图形界面的程序 。以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
# python实现清理垃圾
# proe垃圾文件清理程序
# python清理window垃圾
# Python实现自动清理电脑垃圾文件详解
# 用Python自动清理系统垃圾的实现
# 磁盘垃圾文件清理器python代码实现
# Python实现Harbor私有镜像仓库垃圾自动化清理详情
# 遍历
# 临时文件
# 备份文件
# 系统盘
# 就会
# 目录下
# 然后再
# 文件列表
# 报错
# 帮助文件
# 值为
# 有的是
# 的是
# 目录中
# 适用于
# 请在
# 这类
# 要想
# 扩展名
# 做一个
相关文章:
网站制作壁纸教程视频,电脑壁纸网站?
大连 网站制作,大连天途有线官网?
如何选择适合PHP云建站的开源框架?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
如何用搬瓦工VPS快速搭建个人网站?
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
如何快速重置建站主机并恢复默认配置?
建站之星安装模板失败:服务器环境不兼容?
如何在云指建站中生成FTP站点?
建站之家VIP精选网站模板与SEO优化教程整合指南
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
网站制作免费,什么网站能看正片电影?
如何通过FTP空间快速搭建安全高效网站?
如何彻底删除建站之星生成的Banner?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
宝塔建站教程:一键部署配置流程与SEO优化实战指南
如何解决ASP生成WAP建站中文乱码问题?
如何高效配置香港服务器实现快速建站?
南宁网站建设制作定制,南宁网站建设可以定制吗?
如何快速搭建安全的FTP站点?
微课制作网站有哪些,微课网怎么进?
在线制作视频的网站有哪些,电脑如何制作视频短片?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
如何在IIS中新建站点并配置端口与物理路径?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
建站之星安装后如何自定义网站颜色与字体?
家庭建站与云服务器建站,如何选择更优?
免费视频制作网站,更新又快又好的免费电影网站?
北京网站制作公司哪家好一点,北京租房网站有哪些?
网站制作公司,橙子建站是合法的吗?
如何在万网开始建站?分步指南解析
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
建站三合一如何选?哪家性价比更高?
c# 在高并发场景下,委托和接口调用的性能对比
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
建站之星后台搭建步骤解析:模板选择与产品管理实操指南
如何在阿里云虚拟服务器快速搭建网站?
如何选择可靠的免备案建站服务器?
如何用低价快速搭建高质量网站?
已有域名和空间如何快速搭建网站?
PHP 500报错的快速解决方法
如何彻底卸载建站之星软件?
网站制作价目表怎么做,珍爱网婚介费用多少?
实例解析angularjs的filter过滤器
*请认真填写需求信息,我们会在24小时内与您取得联系。