Files
SillyTavern_replica/test_worldbook_direct.py
2026-05-01 15:44:14 +08:00

92 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
直接测试世界书文件读取不依赖backend模块
"""
import json
from pathlib import Path
# 项目根目录
PROJECT_ROOT = Path(r'D:\progarm\python\llm_workflow_engine')
DATA_PATH = PROJECT_ROOT / 'data'
WORLDBOOKS_PATH = DATA_PATH / 'worldbooks'
print("=" * 60)
print("世界书文件直接读取测试")
print("=" * 60)
print(f"\n1. 路径信息:")
print(f" 世界书目录: {WORLDBOOKS_PATH}")
print(f" 目录存在: {WORLDBOOKS_PATH.exists()}")
# 列出所有JSON文件
json_files = list(WORLDBOOKS_PATH.glob("*.json"))
print(f"\n2. JSON文件列表:")
print(f" 文件数量: {len(json_files)}")
for f in json_files:
print(f" - {f.name} ({f.stat().st_size} bytes)")
if json_files:
# 尝试读取第一个文件
first_file = json_files[0]
print(f"\n3. 尝试读取文件: {first_file.name}")
try:
with open(first_file, 'r', encoding='utf-8') as f:
data = json.load(f)
print(f" ✓ 文件读取成功")
print(f" 文件格式: JSON")
print(f" 顶层键: {list(data.keys())}")
# 检查是否是内部格式
if 'entries' in data:
entries = data['entries']
if isinstance(entries, list):
print(f" 格式类型: 内部格式 (Internal)")
print(f" 条目数量: {len(entries)}")
print(f" 世界书名称: {data.get('name', '未设置')}")
print(f" 描述: {data.get('description', '')}")
if entries:
print(f"\n 第一条目预览:")
first_entry = entries[0]
print(f" UID: {first_entry.get('uid', 'N/A')}")
print(f" 内容长度: {len(first_entry.get('content', ''))}")
print(f" 键: {first_entry.get('key', [])}")
elif isinstance(entries, dict):
print(f" 格式类型: SillyTavern格式")
print(f" 条目数量: {len(entries)}")
else:
print(f" ⚠️ 未知格式,缺少 'entries'")
except json.JSONDecodeError as e:
print(f" ❌ JSON解析失败: {e}")
except Exception as e:
print(f" ❌ 读取失败: {e}")
import traceback
traceback.print_exc()
# 如果有多个文件,也检查第二个
if len(json_files) > 1:
second_file = json_files[1]
print(f"\n4. 尝试读取第二个文件: {second_file.name}")
try:
with open(second_file, 'r', encoding='utf-8') as f:
data = json.load(f)
print(f" ✓ 文件读取成功")
if 'entries' in data:
entries = data['entries']
if isinstance(entries, list):
print(f" 格式类型: 内部格式 (Internal)")
print(f" 条目数量: {len(entries)}")
elif isinstance(entries, dict):
print(f" 格式类型: SillyTavern格式")
print(f" 条目数量: {len(entries)}")
except Exception as e:
print(f" ❌ 读取失败: {e}")
print("\n" + "=" * 60)
print("测试完成")
print("=" * 60)