91 lines
2.5 KiB
Python
91 lines
2.5 KiB
Python
|
#!/usr/bin/env python
|
|||
|
# -*- coding: utf-8 -*-
|
|||
|
# @Time : 2022/3/28 15:28
|
|||
|
# @Author : 李晓杰
|
|||
|
"""
|
|||
|
缓存文件处理
|
|||
|
"""
|
|||
|
|
|||
|
import os
|
|||
|
from typing import Any, Text, Union
|
|||
|
from common.setting import ensure_path_sep
|
|||
|
from utils.other_tools.exceptions import ValueNotFoundError
|
|||
|
|
|||
|
|
|||
|
class Cache:
|
|||
|
""" 设置、读取缓存 """
|
|||
|
def __init__(self, filename: Union[Text, None]) -> None:
|
|||
|
# 如果filename不为空,则操作指定文件内容
|
|||
|
if filename:
|
|||
|
self.path = ensure_path_sep("\\cache" + filename)
|
|||
|
# 如果filename为None,则操作所有文件内容
|
|||
|
else:
|
|||
|
self.path = ensure_path_sep("\\cache")
|
|||
|
|
|||
|
def set_cache(self, key: Text, value: Any) -> None:
|
|||
|
"""
|
|||
|
设置缓存, 只支持设置单字典类型缓存数据, 缓存文件如以存在,则替换之前的缓存内容
|
|||
|
:return:
|
|||
|
"""
|
|||
|
with open(self.path, 'w', encoding='utf-8') as file:
|
|||
|
file.write(str({key: value}))
|
|||
|
|
|||
|
def set_caches(self, value: Any) -> None:
|
|||
|
"""
|
|||
|
设置多组缓存数据
|
|||
|
:param value: 缓存内容
|
|||
|
:return:
|
|||
|
"""
|
|||
|
with open(self.path, 'w', encoding='utf-8') as file:
|
|||
|
file.write(str(value))
|
|||
|
|
|||
|
def get_cache(self) -> Any:
|
|||
|
"""
|
|||
|
获取缓存数据
|
|||
|
:return:
|
|||
|
"""
|
|||
|
try:
|
|||
|
with open(self.path, 'r', encoding='utf-8') as file:
|
|||
|
return file.read()
|
|||
|
except FileNotFoundError:
|
|||
|
pass
|
|||
|
|
|||
|
def clean_cache(self) -> None:
|
|||
|
"""删除所有缓存文件"""
|
|||
|
|
|||
|
if not os.path.exists(self.path):
|
|||
|
raise FileNotFoundError(f"您要删除的缓存文件不存在 {self.path}")
|
|||
|
os.remove(self.path)
|
|||
|
|
|||
|
@classmethod
|
|||
|
def clean_all_cache(cls) -> None:
|
|||
|
"""
|
|||
|
清除所有缓存文件
|
|||
|
:return:
|
|||
|
"""
|
|||
|
cache_path = ensure_path_sep("\\cache")
|
|||
|
|
|||
|
# 列出目录下所有文件,生成一个list
|
|||
|
list_dir = os.listdir(cache_path)
|
|||
|
for i in list_dir:
|
|||
|
# 循环删除文件夹下得所有内容
|
|||
|
os.remove(cache_path + i)
|
|||
|
|
|||
|
|
|||
|
_cache_config = {}
|
|||
|
|
|||
|
|
|||
|
class CacheHandler:
|
|||
|
@staticmethod
|
|||
|
def get_cache(cache_data):
|
|||
|
try:
|
|||
|
return _cache_config[cache_data]
|
|||
|
except KeyError:
|
|||
|
raise ValueNotFoundError(f"{cache_data}的缓存数据未找到,请检查是否将该数据存入缓存中")
|
|||
|
|
|||
|
@staticmethod
|
|||
|
def update_cache(*, cache_name, value):
|
|||
|
_cache_config[cache_name] = value
|
|||
|
|
|||
|
|