You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从目录多文本文件加载停用词时遇AttributeError问题求助

问题分析与解决

错误原因

  • 文件对象误用:你把with open()返回的文件对象stop_words当成列表调用append方法,但文件对象(_io.TextIOWrapper)根本没有append属性,这是直接触发报错的原因。
  • 文件已关闭:循环结束后,with语句会自动关闭文件,此时再调用stop_words.read()会触发文件已关闭的错误,而且逻辑上应该先收集所有文件内容再统一处理。

修正后的代码

import glob
import os

# 获取目标目录下所有txt文件路径
file_list = glob.glob(os.path.join(os.getcwd(), "Directory", "*.txt"))

# 存储所有停用词文件的内容
corpus = []

for file_path in file_list:
    # 指定编码避免乱码问题(可根据实际文件编码调整)
    with open(file_path, 'r', encoding='utf-8') as f:
        # 读取单个文件内容,添加到corpus列表
        corpus.append(f.read())

# 合并所有文件内容并转小写
all_stop_text = '\n'.join(corpus).lower()
# 按换行符分割成停用词列表
stop_word_list = all_stop_text.split('\n')
# 清理所有空字符串(包括文件末尾空行、中间空行)
stop_word_list = [word.strip() for word in stop_word_list if word.strip()]

关键调整说明

  • 把文件对象变量名改为f,避免和停用词相关变量混淆,同时将读取的内容添加到corpus列表(这才是应该调用append的对象)。
  • 统一合并所有文件内容后再处理,避免重复操作,逻辑更清晰。
  • 使用列表推导式清理空字符串,比原代码的切片操作更可靠,能处理所有位置的空行和空白字符。

内容的提问来源于stack exchange,提问作者iFrankenstein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:45:30