最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年01月15日 19:13:35   作者:棲遲於一丘  
Python 是一種面向?qū)ο蟆⒔忉屝陀?jì)算機(jī)程序設(shè)計(jì)語言,下面這篇文章主要給大家介紹了利用python程序如何實(shí)現(xiàn)清理垃圾的功能,本文只適用于windows,有需要的朋友可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。

前言

大家應(yīng)該都有所體會(huì),在windows系統(tǒng)使用久了就會(huì)產(chǎn)生一些“垃圾”文件。這些文件有的是程序的臨時(shí)文件,有的是操作記錄或日志等。垃圾隨著時(shí)間越積越多,導(dǎo)致可用空間減少,文件碎片過多,使得系統(tǒng)的運(yùn)行速度受到一定影響。

而Mac系統(tǒng)和Linux系統(tǒng)并不存在這類問題,所以只適用于windows

知識(shí)概要

某些緩存文件可以提高程序的執(zhí)行速度,比如緩存 cookie、使用記錄 recent、預(yù)讀取 prefetch 等。所以清理臨時(shí)文件并不代表系統(tǒng)運(yùn)行就會(huì)變快,有時(shí)也可能變慢。

windows電腦中的垃圾文件及文件夾主要有哪些?

系統(tǒng)盤 %system% 下文件類型:

     【臨時(shí)文件(*.tmp)】

     【臨時(shí)文件(*._mp)】

     【日志文件(*.log)】

     【臨時(shí)幫助文件(*.gid)】

     【磁盤檢查文件(*.chk)】

     【臨時(shí)備份文件(*.old)】

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

     【臨時(shí)備份文件(*.bak)】

用戶目錄 %userprofile% 下文件夾

     【COOKIE】 cookies\*.*

     【文件使用記錄】 recent\*.*

     【IE臨時(shí)文件】 Temporary Internet Files\*.*

     【臨時(shí)文件文件夾】 Temp\*.*

Windows 目錄 %windir% 下文件夾

     【預(yù)讀取數(shù)據(jù)文件夾】 prefetch\*.*

     【臨時(shí)文件】 temp\*.*

獲取文件地址

操作需要os模塊,如獲取工作目錄:

import os
print os.getcwd() # 'E:\\PythonSource\\leanr_py'

切換工作目錄:

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

獲取系統(tǒng)盤符:

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

獲取用戶目錄:

os.environ['userprofile'] # 'C:\\Users\\Administrator'

獲取 Windows 目錄:

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

遍歷目錄

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

  • 參數(shù)top表示需要遍歷的頂級(jí)目錄的路徑。
  • 參數(shù)topdown的默認(rèn)值是“True”表示首先返回頂級(jí)目錄下的文件,然后再遍歷子目錄中的文件。當(dāng)topdown的值為"False"時(shí),表示先遍歷子目錄中的文件,然后再返回頂級(jí)目錄下的文件。
  • 參數(shù)onerror默認(rèn)值為"None",表示忽略文件遍歷時(shí)的錯(cuò)誤。如果不為空,則提供一個(gè)自定義函數(shù)提示錯(cuò)誤信息后繼續(xù)遍歷或拋出異常中止遍歷。
  • 返回值:函數(shù)返回一個(gè)元組,含有三個(gè)元素。這三個(gè)元素分別是:每次遍歷的路徑名、路徑下子目錄列表、目錄下文件列表。
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() 可以對文件名進(jìn)行切割

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

刪除文件

刪除文件與刪除文件夾調(diào)用的是不同的函數(shù)。

# 刪除文件
os.remove('d:temporary/test/test.txt')

# 刪除文件夾
os.rmdir('d:temporary/test/empty')

os.rmdir 只能刪除空文件夾,如果文件夾非空,則會(huì)報(bào)錯(cuò)。所以應(yīng)該用:

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

文件正在運(yùn)行或者受到保護(hù)、當(dāng)前賬戶沒有足夠權(quán)限時(shí),刪除會(huì)報(bào)錯(cuò)。

最后整理刪除函數(shù)為:

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

完整程序

注意:由于牽涉到文件刪除操作,請?jiān)趧?dòng)手前務(wù)必反復(fù)確認(rèn)代碼,萬一導(dǎo)致什么重要文件被刪.

務(wù)必確認(rèn)!??!

務(wù)必確認(rèn)?。?!

務(wù)必確認(rèn)?。?!

import os
import json
import shutil
del_extension = {
 '.tmp': '臨時(shí)文件',
 '._mp': '臨時(shí)文件_mp',
 '.log': '日志文件',
 '.gid': '臨時(shí)幫助文件',
 '.chk': '磁盤檢查文件',
 '.old': '臨時(shí)備份文件',
 '.xlk': 'Excel備份文件',
 '.bak': '臨時(shí)備份文件bak'
}

del_userprofile = ['cookies', 'recent', 'Temporary Internet Files', 'Temp']
del_windir = ['prefetch', 'temp']

# 獲取系統(tǒng)盤
SYS_DRIVE = os.environ['systemdrive'] + '\\'
# 獲取用戶目錄
USER_PROFILE = os.environ['userprofile']
# 獲取 Windows 目錄
WIN_DIR = os.environ['windir']

# 獲取當(dāng)前路徑 os.getcwd() 'E:\\Software\\Python27'
# 跳轉(zhuǎn)至指定的文件目錄 os.chdir('d://wamp')
# 獲取系統(tǒng)盤符 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"


# 字節(jié)bytes轉(zhuǎn)化kb\m\g
def formatSize(bytes):
 try:
  bytes = float(bytes)
  kb = bytes / 1024
 except:
  print("傳入的字節(jié)格式不對")
  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 為根目錄的目錄樹,參數(shù) topdown 設(shè)定展開方式從底層到頂層
   for file_item in files:
    # 獲取擴(kuò)展名
    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 '刪除可節(jié)省:%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()

總結(jié)

最近在看一些qt界面的內(nèi)容。可以結(jié)合做一個(gè)有圖形界面的程序 。以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關(guān)文章

  • Python全棧之模板渲染詳解

    Python全棧之模板渲染詳解

    這篇文章主要為大家詳細(xì)介紹了Python全棧之模板渲染,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 在Django中動(dòng)態(tài)地過濾查詢集的實(shí)現(xiàn)

    在Django中動(dòng)態(tài)地過濾查詢集的實(shí)現(xiàn)

    本文主要介紹了Django中動(dòng)態(tài)地過濾查詢集的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • mac系統(tǒng)下安裝pycharm、永久激活、中文漢化詳細(xì)教程

    mac系統(tǒng)下安裝pycharm、永久激活、中文漢化詳細(xì)教程

    這篇文章主要介紹了mac系統(tǒng)下安裝pycharm、永久激活、中文漢化詳細(xì)教程,需要的朋友可以參考下
    2020-11-11
  • Python3 log10()函數(shù)簡單用法

    Python3 log10()函數(shù)簡單用法

    在本文中我們給大家整理了關(guān)于Python3中l(wèi)og10()函數(shù)的基本用法和相關(guān)知識(shí)點(diǎn),需要的可以學(xué)習(xí)下。
    2019-02-02
  • Python實(shí)現(xiàn)笑臉檢測+人臉口罩檢測功能

    Python實(shí)現(xiàn)笑臉檢測+人臉口罩檢測功能

    這篇文章主要介紹了Python實(shí)現(xiàn)笑臉檢測+人臉口罩檢測,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Python可視化目標(biāo)檢測框的實(shí)現(xiàn)代碼

    Python可視化目標(biāo)檢測框的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python可視化目標(biāo)檢測框的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Python?使用csv庫處理CSV文件的方法

    Python?使用csv庫處理CSV文件的方法

    Python中集成了專用于處理csv文件的庫,名為:csv,本文給大家介紹了Python使用csv庫處理CSV文件的方法及csv庫中4個(gè)常用的對象,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Python 實(shí)現(xiàn)勞拉游戲的實(shí)例代碼(四連環(huán)、重力四子棋)

    Python 實(shí)現(xiàn)勞拉游戲的實(shí)例代碼(四連環(huán)、重力四子棋)

    這篇文章主要介紹了Python 實(shí)現(xiàn)勞拉游戲的實(shí)例代碼(四連環(huán)、重力四子棋),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 在python3.9下如何安裝scrapy的方法

    在python3.9下如何安裝scrapy的方法

    這篇文章主要介紹了在python3.9下如何安裝scrapy的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • OpenCV?imread讀取圖片失敗的問題及解決

    OpenCV?imread讀取圖片失敗的問題及解決

    這篇文章主要介紹了OpenCV?imread讀取圖片失敗的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評(píng)論

东乌珠穆沁旗| 顺昌县| 青岛市| 金堂县| 泸定县| 衡山县| 阜新| 皮山县| 濮阳市| 壤塘县| 天全县| 青龙| 丹阳市| 友谊县| 会昌县| 铁岭县| 平和县| 麻城市| 隆安县| 光山县| 灌阳县| 加查县| 昂仁县| 志丹县| 敦煌市| 罗平县| 忻城县| 民权县| 溧阳市| 买车| 综艺| 武城县| 额济纳旗| 芦山县| 岳普湖县| 盐边县| 高台县| 保康县| 鄂托克前旗| 读书| 县级市|