text_parser.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from core.router import Parser
  2. from models.result import ParseResult
  3. from utils.logger import log
  4. class TextParser(Parser):
  5. """文本文件解析器"""
  6. async def parse(self, file_path: str) -> ParseResult:
  7. """
  8. 解析文本文件
  9. Args:
  10. file_path: 文件路径
  11. Returns:
  12. ParseResult: 解析结果
  13. """
  14. log.info(f"开始解析文本文件: {file_path}")
  15. try:
  16. # 读取文本文件内容
  17. with open(file_path, 'r', encoding='utf-8', errors='replace') as f:
  18. content = f.read()
  19. # 构建解析结果
  20. result = ParseResult(
  21. content=content,
  22. metadata={
  23. "file_size": len(content),
  24. "line_count": len(content.split('\n'))
  25. },
  26. file_type="text"
  27. )
  28. log.info(f"文本文件解析完成,大小: {len(content)} 字符")
  29. return result
  30. except Exception as e:
  31. log.error(f"文本文件解析失败: {str(e)}")
  32. return ParseResult(
  33. content="",
  34. metadata={"error": str(e)},
  35. file_type="text"
  36. )