首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >2025-09-14 langchain学习-09 自定义文件读取器

2025-09-14 langchain学习-09 自定义文件读取器

作者头像
用户11830194
发布2025-09-14 15:19:07
发布2025-09-14 15:19:07
1410
举报
文章被收录于专栏:langchainlangchain
代码语言:python
复制
from langchain_core.document_loaders import BaseLoader
from langchain_core.documents import Document
from typing import Iterator,AsyncIterator
import asyncio

class MyDocLoader(BaseLoader):
  def __init__(self,file_path:str)->None:
    self.file_path=file_path
  
  def lazy_load(self)->Iterator[Document]:
    line_num=0
    with open(self.file_path,encoding='utf-8') as f:
      for line in f:
        #判断去除首尾空字符后返回值是否为空
        if not line.strip():
          continue
        yield(
          Document(
            page_content=line,
            matedata={"line_num":line_num,"source":self.file_path}
          )
        )
        line_num+=1
  
  async def alazy_load(self)->AsyncIterator[Document]:
    line_num=0
    import aiofiles
    async with aiofiles.open(self.file_path,encoding='utf-8') as f:
      async for line in f:
        yield Document(
          page_content=line,
          matedata={"line_num":line_num,"source":self.file_path}
        )
        line_num+=1
      
def func1():
  loader=MyDocLoader("C:/Users/eva/Desktop/test.txt")
  for doc in loader.lazy_load():
    print(doc)

#func1()

async def func2():
  loader=MyDocLoader("C:/Users/eva/Desktop/test.txt")
  async for doc in loader.alazy_load():
    print(doc)

asyncio.run(func2())


    
    

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档