本文目录导读:

删除特定目录下的缓存文件
import os
import shutil
from pathlib import Path
def delete_cache_files(directory, patterns=None):
"""
批量删除缓存文件
:param directory: 目标目录
:param patterns: 要删除的文件模式列表,如 ['*.pyc', '__pycache__']
"""
if patterns is None:
patterns = ['*.pyc', '*.pyo', '__pycache__', '.DS_Store', 'Thumbs.db']
deleted_count = 0
for pattern in patterns:
if '*' in pattern:
# 删除匹配的文件模式
for file_path in Path(directory).rglob(pattern):
try:
if file_path.is_file():
file_path.unlink()
print(f"删除文件: {file_path}")
deleted_count += 1
except Exception as e:
print(f"删除失败 {file_path}: {e}")
else:
# 删除特定目录名
for dir_path in Path(directory).rglob(pattern):
try:
if dir_path.is_dir():
shutil.rmtree(dir_path)
print(f"删除目录: {dir_path}")
deleted_count += 1
except Exception as e:
print(f"删除失败 {dir_path}: {e}")
print(f"共删除 {deleted_count} 个缓存对象")
return deleted_count
# 使用示例
delete_cache_files("./project")
删除浏览器缓存
import os
import glob
import shutil
def delete_browser_cache(browser_type='all'):
"""
删除浏览器缓存
:param browser_type: 'chrome', 'firefox', 'edge', 'all'
"""
# 获取用户主目录
home = os.path.expanduser("~")
browsers = {
'chrome': {
'windows': os.path.join(os.getenv('LOCALAPPDATA'), 'Google', 'Chrome', 'User Data', 'Default', 'Cache'),
'mac': os.path.join(home, 'Library', 'Caches', 'Google', 'Chrome'),
'linux': os.path.join(home, '.cache', 'google-chrome')
},
'firefox': {
'windows': os.path.join(os.getenv('APPDATA'), 'Mozilla', 'Firefox', 'Profiles'),
'mac': os.path.join(home, 'Library', 'Caches', 'Firefox'),
'linux': os.path.join(home, '.cache', 'mozilla', 'firefox')
},
'edge': {
'windows': os.path.join(os.getenv('LOCALAPPDATA'), 'Microsoft', 'Edge', 'User Data', 'Default', 'Cache'),
'mac': os.path.join(home, 'Library', 'Caches', 'Microsoft Edge'),
}
}
# 检测操作系统
import platform
system = platform.system().lower()
if system == 'darwin':
os_name = 'mac'
elif system == 'windows':
os_name = 'windows'
else:
os_name = 'linux'
if browser_type == 'all':
types = browsers.keys()
else:
types = [browser_type]
total_deleted = 0
for browser_name in types:
if browser_name in browsers and os_name in browsers[browser_name]:
cache_path = browsers[browser_name][os_name]
if os.path.exists(cache_path):
try:
if os_name == 'linux' and browser_name == 'firefox':
# Firefox 在 Linux 上使用配置文件路径
for profile in os.listdir(cache_path):
profile_cache = os.path.join(cache_path, profile, 'cache2')
if os.path.exists(profile_cache):
shutil.rmtree(profile_cache)
print(f"删除 {browser_name} 缓存: {profile_cache}")
total_deleted += 1
else:
for item in os.listdir(cache_path):
item_path = os.path.join(cache_path, item)
if os.path.isfile(item_path):
os.remove(item_path)
else:
shutil.rmtree(item_path)
total_deleted += 1
print(f"清空 {browser_name} 缓存目录")
except Exception as e:
print(f"删除 {browser_name} 缓存失败: {e}")
else:
print(f"未找到 {browser_name} 缓存目录: {cache_path}")
return total_deleted
# 使用示例
# delete_browser_cache('chrome')
# delete_browser_cache('all')
删除系统临时文件
import tempfile
import shutil
import os
from pathlib import Path
def cleanup_temp_files(days_old=7):
"""
清理系统临时文件
:param days_old: 删除多少天前的临时文件
"""
import time
now = time.time()
cutoff = now - (days_old * 86400) # 转换为秒
temp_dirs = [
tempfile.gettempdir(),
os.path.join(os.path.expanduser("~"), "AppData", "Local", "Temp") if os.name == 'nt' else None,
'/tmp' if os.name != 'nt' else None
]
deleted_count = 0
for temp_dir in temp_dirs:
if temp_dir and os.path.exists(temp_dir):
try:
for root, dirs, files in os.walk(temp_dir, topdown=False):
# 删除过期文件
for file in files:
file_path = os.path.join(root, file)
try:
if os.path.getmtime(file_path) < cutoff:
os.remove(file_path)
deleted_count += 1
except:
pass
# 删除空目录
for dir in dirs:
dir_path = os.path.join(root, dir)
try:
if not os.listdir(dir_path):
os.rmdir(dir_path)
deleted_count += 1
except:
pass
except Exception as e:
print(f"清理临时目录 {temp_dir} 时出错: {e}")
return deleted_count
# 使用示例
# cleanup_temp_files(days_old=3)
删除Python项目中的缓存
import os
import shutil
from pathlib import Path
def clean_python_project_cache(project_path="."):
"""
清理Python项目中的缓存文件
"""
patterns = [
'__pycache__',
'*.pyc',
'*.pyo',
'.pytest_cache',
'.mypy_cache',
'.cache',
'*.egg-info',
'*.egg',
'dist',
'build',
'.tox',
'.coverage',
'htmlcov',
'.eggs'
]
deleted_count = 0
project_dir = Path(project_path)
for pattern in patterns:
if '*' in pattern:
# 文件模式
for file_path in project_dir.rglob(pattern):
try:
file_path.unlink()
print(f"删除缓存文件: {file_path}")
deleted_count += 1
except Exception as e:
print(f"删除失败 {file_path}: {e}")
else:
# 目录模式
for dir_path in project_dir.rglob(pattern):
try:
if dir_path.is_dir():
shutil.rmtree(dir_path)
print(f"删除缓存目录: {dir_path}")
deleted_count += 1
except Exception as e:
print(f"删除失败 {dir_path}: {e}")
print(f"共清理 {deleted_count} 个Python缓存对象")
return deleted_count
# 使用示例
# clean_python_project_cache("./my_project")
综合缓存清理工具
import os
import shutil
import tempfile
from pathlib import Path
import platform
class CacheCleaner:
"""综合缓存清理类"""
def __init__(self, verbose=True):
self.verbose = verbose
self.system = platform.system().lower()
self.home = os.path.expanduser("~")
self.total_deleted = 0
def log(self, message):
"""日志输出"""
if self.verbose:
print(message)
def clean_python_cache(self, path="."):
"""清理Python缓存"""
patterns = ['__pycache__', '*.pyc', '*.pyo', '.pytest_cache', '.mypy_cache']
project_dir = Path(path)
for pattern in patterns:
if '*' in pattern:
for file_path in project_dir.rglob(pattern):
try:
file_path.unlink()
self.total_deleted += 1
self.log(f"删除缓存文件: {file_path}")
except Exception as e:
self.log(f"删除失败 {file_path}: {e}")
else:
for dir_path in project_dir.rglob(pattern):
try:
if dir_path.is_dir():
shutil.rmtree(dir_path)
self.total_deleted += 1
self.log(f"删除缓存目录: {dir_path}")
except Exception as e:
self.log(f"删除失败 {dir_path}: {e}")
def clean_browser_cache(self):
"""清理浏览器缓存"""
browsers = {
'chrome': {
'windows': os.path.join(os.getenv('LOCALAPPDATA'), 'Google', 'Chrome', 'User Data', 'Default', 'Cache'),
'darwin': os.path.join(self.home, 'Library', 'Caches', 'Google', 'Chrome'),
'linux': os.path.join(self.home, '.cache', 'google-chrome')
},
'firefox': {
'windows': os.path.join(os.getenv('APPDATA'), 'Mozilla', 'Firefox', 'Profiles'),
'darwin': os.path.join(self.home, 'Library', 'Caches', 'Firefox'),
'linux': os.path.join(self.home, '.cache', 'mozilla', 'firefox')
},
'edge': {
'windows': os.path.join(os.getenv('LOCALAPPDATA'), 'Microsoft', 'Edge', 'User Data', 'Default', 'Cache'),
'darwin': os.path.join(self.home, 'Library', 'Caches', 'Microsoft Edge'),
}
}
for browser_name, paths in browsers.items():
if self.system in paths:
cache_path = paths[self.system]
if os.path.exists(cache_path):
try:
if os.path.isdir(cache_path):
shutil.rmtree(cache_path)
self.log(f"清理 {browser_name} 缓存")
self.total_deleted += 1
except Exception as e:
self.log(f"清理 {browser_name} 缓存失败: {e}")
def clean_temp_files(self):
"""清理临时文件"""
temp_dir = tempfile.gettempdir()
try:
for item in os.listdir(temp_dir):
item_path = os.path.join(temp_dir, item)
try:
if os.path.isfile(item_path):
os.remove(item_path)
else:
shutil.rmtree(item_path)
self.total_deleted += 1
except:
pass
self.log(f"清理临时目录: {temp_dir}")
except Exception as e:
self.log(f"清理临时文件失败: {e}")
def clean_all(self):
"""清理所有缓存"""
self.log("开始清理缓存...")
self.clean_python_cache()
self.clean_browser_cache()
self.clean_temp_files()
self.log(f"清理完成,共删除 {self.total_deleted} 个缓存对象")
return self.total_deleted
# 使用示例
# cleaner = CacheCleaner()
# cleaner.clean_all()
使用注意事项
- 权限问题:某些系统目录需要管理员权限
- 数据安全:删除前确保缓存不是重要数据
- 进程占用:被使用的缓存文件可能无法删除
- 定期清理:建议设定定期自动清理
这些脚本可以根据你的具体需求进行调整,如需特定场景的缓存清理,请告诉我具体需求。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播