日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

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

發(fā)布時(shí)間:2023/12/2 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python垃圾处理_利用python程序帮大家清理windows垃圾 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

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

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

知識(shí)概要

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

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

系統(tǒng)盤(pán) %system% 下文件類(lèi)型:

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

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

【日志文件(*.log)】

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

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

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

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

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

用戶(hù)目錄 %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)盤(pán)符:

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

獲取用戶(hù)目錄:

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

獲取 Windows 目錄:

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

遍歷目錄

要想遍歷文件夾,需要用到 os.walk(top,topdown=True,οnerrοr=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()可以對(duì)文件名進(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)前賬戶(hù)沒(méi)有足夠權(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

完整程序

注意:由于牽涉到文件刪除操作,請(qǐng)?jiān)趧?dòng)手前務(wù)必反復(fù)確認(rèn)代碼,萬(wà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': '磁盤(pán)檢查文件',

'.old': '臨時(shí)備份文件',

'.xlk': 'Excel備份文件',

'.bak': '臨時(shí)備份文件bak'

}

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

del_windir = ['prefetch', 'temp']

# 獲取系統(tǒng)盤(pán)

SYS_DRIVE = os.environ['systemdrive'] + '\\'

# 獲取用戶(hù)目錄

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)盤(pán)符 os.environ['systemdrive'] 'C:'

# 獲取用戶(hù)目錄 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é)格式不對(duì)")

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):

# 生成并展開(kāi)以 root 為根目錄的目錄樹(shù),參數(shù) topdown 設(shè)定展開(kāi)方式從底層到頂層

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è)有圖形界面的程序 。以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。

總結(jié)

以上是生活随笔為你收集整理的python垃圾处理_利用python程序帮大家清理windows垃圾的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。