一、TextLoader 支持的主要文本类型(可直接读取)

  1. 纯文本文件:.txt(最常用,无任何格式,直接读取文本内容);
  2. 简单标记 / 配置文件:.md(Markdown,仅读取文本内容,忽略格式标记)、.json(读取完整文本字符串,不解析 JSON 结构)、.yaml/.yml(同 JSON,仅读取文本,不解析配置);
  3. 代码文件:.py(Python 代码)、.java.js 等,读取代码文本内容(不执行、不解析代码逻辑);
  4. 其他纯文本类文件:.csv(读取为纯文本,不解析表格结构)、.log(日志文件,纯文本形式直接读取)。

二、TextLoader 不支持的文本格式(需专用 Loader)

以下格式无法用 TextLoader 直接读取,需使用 langchain 对应专用 Loader(如 UnstructuredLoader、PyPDFLoader 等):

  • 带格式文档:.docx(Word)、.pptx(PPT)、.xlsx(Excel);
  • PDF 文件:.pdf(需用 PyPDFLoader、PDFMinerLoader 等);
  • 二进制文件:.png(图片)、.mp3(音频)、.mp4(视频);
  • 加密 / 压缩文件:.zip.rar、加密文档等。

三、关键补充

TextLoader 的核心逻辑是「按字符读取文件内容」,无论文件后缀是什么,只要是纯文本编码(UTF-8、GBK 等) 的文件,都能读取;但如果文件包含非文本编码(如二进制、特殊格式标记),读取后会出现乱码,失去实际意义。

简单总结:TextLoader 只适用于「无复杂格式的纯文本类文件」,复杂格式需搭配对应专用 Loader。

代码部分:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

# pip install unstructured  # 安装unstructured库,用于处理非结构化文档

from langchain_community.document_loaders import TextLoader, DirectoryLoader, JSONLoader

import os

# ==================== 获取当前文件路径 ====================

# os.path.abspath(__file__) 获取当前脚本的绝对路径

# os.path.dirname() 获取路径的目录部分

current_dir = os.path.dirname(os.path.abspath(__file__))

print('---------当前路径')

print(current_dir)  # 打印当前脚本所在的目录路径

# ==================== 加载单个TXT文件 ====================

print('---------txt文件加载')

# TextLoader: 用于加载文本文件的加载器

# "./txt/1.txt": 相对路径下的txt文件

# encoding="utf8": 指定文件编码为UTF-8,防止中文乱码

loader = TextLoader("./txt/1.txt", encoding="utf8")

doc = loader.load()  # load()方法执行实际的文件读取操作

print(doc)  # 打印加载的文档内容

# ==================== 加载单个HTML文件 ====================

print('---------html文件加载')

# 虽然文件是HTML格式,但TextLoader会将其作为纯文本读取

loader1 = TextLoader("./txt/Color-management.html", encoding="utf8")

doc1 = loader1.load()

print(doc1)

# ==================== 目录加载器 ====================

# Windows系统需要先安装: pip install python-magic-bin

# Linux系统需要先安装: pip install python-magic

print('---------目录加载器 一个目录下所有文件加载')

# DirectoryLoader: 用于加载整个目录下的所有文件

# './file': 指定要加载的目录路径

# 默认会加载目录下的所有文件(包括子目录)

loader = DirectoryLoader('./file')

texts = loader.load()  # 加载目录中的所有文件

print(texts)  # 打印所有加载的文档

# ==================== 使用glob参数筛选特定文件 ====================

print('---------我们可以使用 glob 参数来控制加载哪些文件。请注意,此处它只加载.json 文件。')

# DirectoryLoader 的高级用法:

# glob="**/*.json": 使用glob模式匹配所有.json文件

#   ** 表示任意层级的子目录

#   *.json 表示所有以.json结尾的文件

# loader_cls=TextLoader: 指定使用TextLoader来加载匹配到的文件

# loader_kwargs={'encoding': 'gbk'}: 传递给TextLoader的参数,指定使用GBK编码

#   因为有些JSON文件可能使用GBK编码(常见于中文Windows系统)

loader = DirectoryLoader(

    './txt',  # 要扫描的根目录

    glob="**/*.json",  # 只加载JSON文件

    loader_cls=TextLoader,  # 使用文本加载器

    loader_kwargs={'encoding''gbk'}  # 指定编码为GBK

)

josntxt = loader.load()  # 加载所有匹配的JSON文件

print(josntxt)  # 打印加载的JSON文件内容

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐