| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- """
- 简化版缓存清除工具 - 不依赖外部库
- """
- import os
- import shutil
- import hashlib
- def get_cache_dir():
- """获取缓存目录"""
- current_dir = os.path.dirname(os.path.abspath(__file__))
- return os.path.join(current_dir, '.cache')
- def clear_all_cache():
- """清除所有缓存"""
- cache_dir = get_cache_dir()
-
- if os.path.exists(cache_dir):
- print(f"缓存目录: {cache_dir}")
-
- # 统计信息
- total_size = 0
- file_count = 0
- for root, dirs, files in os.walk(cache_dir):
- for file in files:
- file_path = os.path.join(root, file)
- try:
- total_size += os.path.getsize(file_path)
- file_count += 1
- except:
- pass
-
- print(f"文件数量: {file_count}")
- print(f"总大小: {total_size / 1024:.2f} KB")
-
- # 确认删除
- response = input("\n确认清除所有缓存?(yes/no): ")
- if response.lower() == 'yes':
- shutil.rmtree(cache_dir)
- os.makedirs(cache_dir)
- print("✓ 已清除所有缓存")
- return True
- else:
- print("取消操作")
- return False
- else:
- print("缓存目录不存在")
- return False
- def clear_question_cache(question: str):
- """清除特定问题的缓存"""
- cache_dir = get_cache_dir()
-
- question_hash = hashlib.md5(question.encode('utf-8')).hexdigest()[:12]
- question_dir = os.path.join(cache_dir, question_hash)
-
- if os.path.exists(question_dir):
- # 显示问题文本
- question_file = os.path.join(question_dir, 'question.txt')
- if os.path.exists(question_file):
- with open(question_file, 'r', encoding='utf-8') as f:
- cached_question = f.read()
- print(f"找到缓存的问题: {cached_question}")
-
- # 确认删除
- response = input("\n确认清除此问题的缓存?(yes/no): ")
- if response.lower() == 'yes':
- shutil.rmtree(question_dir)
- print("✓ 已清除该问题的缓存")
- return True
- else:
- print("取消操作")
- return False
- else:
- print("未找到该问题的缓存")
- return False
- def list_cached_questions():
- """列出所有缓存的问题"""
- cache_dir = get_cache_dir()
-
- if not os.path.exists(cache_dir):
- print("缓存目录不存在")
- return
-
- print("\n缓存的问题列表:")
- print("=" * 60)
-
- count = 0
- for dir_name in os.listdir(cache_dir):
- question_dir = os.path.join(cache_dir, dir_name)
- if os.path.isdir(question_dir):
- question_file = os.path.join(question_dir, 'question.txt')
- if os.path.exists(question_file):
- try:
- with open(question_file, 'r', encoding='utf-8') as f:
- question = f.read()
- count += 1
- print(f"{count}. [{dir_name}] {question[:50]}...")
- except:
- pass
-
- print("=" * 60)
- print(f"总计: {count} 个缓存问题\n")
- if __name__ == "__main__":
- print("=" * 60)
- print("缓存管理工具")
- print("=" * 60)
- print("1. 列出所有缓存")
- print("2. 清除所有缓存")
- print("3. 清除特定问题的缓存")
- print("=" * 60)
-
- choice = input("请选择操作 (1/2/3): ")
-
- if choice == "1":
- list_cached_questions()
- elif choice == "2":
- clear_all_cache()
- elif choice == "3":
- question = input("请输入问题的完整文本(需要与原问题完全一致): ")
- clear_question_cache(question)
- else:
- print("无效的选择")
|