侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

利用python程序帮大家清理windows垃圾

Windows  /  管理员 发布于 5年前   316

前言

大家应该都有所体会,在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 osprint 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)

  • 参数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'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"

获取文件大小

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

完整程序

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

务必确认!!!

务必确认!!!

务必确认!!!

import osimport jsonimport shutildel_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\gdef 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界面的内容。可以结合做一个有图形界面的程序 。以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


  • 上一条:
    win系统下为Python3.5安装flask-mongoengine 库
    下一条:
    win7上python2.7连接mysql数据库的方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Windows 10的告别:2025年10月14日,一段时代的终结(0个评论)
    • windows 11激活_Win11 KMS激活流程步骤(1个评论)
    • 安装Windows 11系统的注意了,看看你的cpu是否在微软兼容列表排除中(1个评论)
    • 微软将于2022年9月20日推送Windows11 22H2新版本,推测2024发布windows 12(0个评论)
    • windows11系统中可以关闭禁止的服务及介绍(1个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2018-01
    • 2018-06
    • 2020-06
    • 2021-06
    • 2021-07
    • 2022-01
    • 2022-04
    • 2022-08
    • 2023-08
    • 2023-10
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客