写python笔记本推荐_写个python程序帮你清理垃圾
起步
知識概要
【臨時文件(*.tmp)】
【臨時文件(*._mp)】
【日志文件(*.log)】
【臨時幫助文件(*.gid)】
【磁盤檢查文件(*.chk)】
【臨時備份文件(*.old)】
【Excel備份文件(*.xlk)】
【臨時備份文件(*.bak)】
【COOKIE】 cookies\*.*
【文件使用記錄】 recent\*.*
【IE臨時文件】 Temporary Internet Files\*.*
【臨時文件文件夾】 Temp\*.*
【預讀取數據文件夾】 prefetch\*.*
【臨時文件】 temp\*.*
獲取文件地址
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'
os.environ['windir'] # 'C:\\Windows'
遍歷目錄
參數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']
判斷是否垃圾文件
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')
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()
總結
總結
以上是生活随笔為你收集整理的写python笔记本推荐_写个python程序帮你清理垃圾的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: idea java no sdk_jav
- 下一篇: python重载模块_Python 3.