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

前言

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

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

获取文件大小

# 显示文件夹(路径)大小,单位 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界面的内容。可以结合做一个有图形界面的程序 。以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

(0)

相关推荐

  • python使用wmi模块获取windows下的系统信息 监控系统

    Python用WMI模块获取Windows系统的硬件信息:硬盘分区.使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息. 本文实例讲述了python使用wmi模块获取windows下的系统信息 监控系统 #!/usr/bin/env python # -*- coding: utf- -*- #http://www.cnblogs.com/liu-ke/ import wmi import os import sys import platform import

  • 利用Python实现Windows定时关机功能

    是最初的几个爬虫,让我认识了Python这个新朋友,虽然才刚认识了几天,但感觉有种莫名的默契感.每当在别的地方找不到思路,总能在Python找到解决的办法.自动关机,在平时下载大文件,以及跑程序的时候能用到的,刚才写了个windows自动关机的小程序,程序过于简单,就当是玩玩吧,当然还有很多可改进的地方.下面正文:  #ui制作: 照旧,笔者由Qt制作完成需要的ui,包括label,label_2,label_3,lable_4,lineEdit,lineEdit_2,pushButton组件.

  • python解决方案:WindowsError: [Error 2]

    使用Python的rename()函数重命名文件时出现问题,提示 WindowsError: [Error 2] 错误,最初代码如下: def renameFile(filename): filePre = "D:\\FileDemo\\Python\\pt.py" os.rename(filePre, filename) print os.listdir(filePre) if __name__ == '__main__': fileNew = "D:\\FileDemo\

  • python使用ctypes模块调用windowsapi获取系统版本示例

    python使用ctypes模块调用windows api GetVersionEx获取当前系统版本,没有使用python32 复制代码 代码如下: #!c:/python27/python.exe#-*- coding:utf-8 -*- "通过调用Window API判断当前系统版本"# 演示通过ctypes调用windows api函数.# 作者已经知道python32能够实现相同功能# 语句末尾加分号,纯属个人习惯# 仅作部分版本判断,更详细的版本判断推荐系统OSVERSION

  • python使用WMI检测windows系统信息、硬盘信息、网卡信息的方法

    本文实例讲述了python使用WMI检测windows系统信息.硬盘信息.网卡信息的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import wmi import sys,time,platform def get_system_info(os): """ 获取操作系统版本. """ print print "Operating system

  • python在Windows下安装setuptools(easy_install工具)步骤详解

    本文讲述了python在Windows下安装setuptools(easy_install工具)的方法.分享给大家供大家参考,具体如下: [题外话介绍下setuptools] setuptools 是一组由PEAK(Python Enterprise Application Kit)开发的 Python 的 distutils 工具的增强工具,可以让程序员更方便的创建和发布 Python的egg 包,特别是那些对其它包具有依赖性的状况. 由 setuptools 创建和发布的包看起来和基于 di

  • Python制作Windows系统服务

    最近有个Python程序需要安装并作为Windows系统服务来运行,过程中碰到一些坑,整理了一下. Python服务类 首先Python程序需要调用一些Windows系统API才能作为系统服务,具体内容如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import sys import time import win32api import win32event import win32service import win32serviceuti

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

    前言 大家应该都有所体会,在windows系统使用久了就会产生一些"垃圾"文件.这些文件有的是程序的临时文件,有的是操作记录或日志等.垃圾随着时间越积越多,导致可用空间减少,文件碎片过多,使得系统的运行速度受到一定影响. 而Mac系统和Linux系统并不存在这类问题,所以只适用于windows 知识概要 某些缓存文件可以提高程序的执行速度,比如缓存 cookie.使用记录 recent.预读取 prefetch 等.所以清理临时文件并不代表系统运行就会变快,有时也可能变慢. windo

  • 利用Python程序读取Excel创建折线图

    目录 一.打开命令提示符 二.通过pip命令安装所需要的工具库 三.打开IDLE开始编程 附录 1.常用的工具库安装 2.pip常用命令 3.常用的工具库 4.常用的marker 5.常用的颜色 一.打开命令提示符 方法一:window+R键 ——输入cmd 方法二:在此搜索cmd进入命令提示符 二.通过pip命令安装所需要的工具库 输入pip install pandas命令安装pandas工具库输入pip install matplotlib命令安装matplotlib工具库其他的工具库安装

  • Python程序语言快速上手教程

    本来打算从网上找一篇入门教程,但因为Python很少是程序员的第一次接触程序所学的语言,所以网上现有的教程多不是很基础,还是决定自己写下这些. 如果没有程序基础的话,可能会觉得本文涵盖的内容有点多.对照大学里面常教的C语言的教学速度,本文大约有四五个课时的内容:对照网上程序类的视频 教程,大致相当于两三个小时的内容:对于翻一本程序书籍,大约相当于翻一个小时书.也因此,如果有深入学习的打算的话,为了效率还是推荐看书. 如果暂时不能理解本文中的一些内容也没关系,因为都是一些经常会用到的基础知识,在实

  • 用Python自动清理系统垃圾的实现

    用Python自动清理系统垃圾,再也不用360安全卫士了 在Windows在安装和使用过程中都会产生相当多的垃圾文件,包括临时文件(如:.tmp.._mp)日志文件(.log).临时帮助文件(.gid).磁盘检查文件(.chk).临时备份文件(如:.old.*.bak)以及其他临时文件.特别是如果一段时间不清理IE的临时文件夹"Temporary Internet Files",其中的缓存文件有时会占用上百MB的磁盘空间.这些LJ文件不仅仅浪费了宝贵的磁盘空间,严重时还会使系统运行慢如

  • windows清理系统垃圾bat脚本及使用步骤

    目录 bat (批处理文件类型) 一.针对电脑小白的系统垃圾清理 二.使用步骤 总结 bat (批处理文件类型) 批处理文件,在DOS和Windows(任意)系统中,.bat文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用.这个文件的每一行都是一条DOS命令(大部分时候就好像我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件. 批处理(Batch),也称为批处理脚本.顾名思义,

  • Python删除windows垃圾文件的方法

    本文实例讲述了Python删除windows垃圾文件的方法.分享给大家供大家参考.具体如下: #coding:utf-8 import os #from glob import glob if os.name == 'nt': if 'HOMEPATH' in os.environ: home = os.environ['HOMEDRIVE'] + os.environ['HOMEPATH'] else: home = os.environ['HOMEPATH'] workpath = os.p

  • Python实现Harbor私有镜像仓库垃圾自动化清理详情

    目录 一.编写Python脚本 二.执行Python脚本 一.编写Python脚本 [root@lidabai ~]# vim harbor_clearimage.py # -*- coding:utf-8 -*- import requests from requests.auth import HTTPBasicAuth from requests.adapters import HTTPAdapter from requests.packages.urllib3.util.retry im

  • 清理Windows服务器的垃圾文件的批处理

    复制代码 代码如下: @echo off echo 正在清理系统垃圾文件,请稍等...... del /f /s /q %systemdrive%\*.tmp del /f /s /q %systemdrive%\*._mp del /f /s /q %systemdrive%\*.log del /f /s /q %systemdrive%\*.gid del /f /s /q %systemdrive%\*.chk del /f /s /q %systemdrive%\*.old del /

  • 以windows service方式运行Python程序的方法

    本文实例讲述了以windows service方式运行Python程序的方法.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python # coding: utf-8 # SmallestService.py # # A sample demonstrating the smallest possible service written in Python. import win32serviceutil import win32service import win3

随机推荐