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

Python中for循环读取txt文件存列表仅返回空字符串如何解决

问题原因
  • 路径拼接不兼容系统:直接使用/硬编码拼接路径,在Windows系统下会生成无效路径,导致glob.glob()没有匹配到任何.txt文件,text_files为空列表,后续for循环没有执行,最终lista自然是空列表。
  • 文件编码不匹配:open()函数使用系统默认编码读取文件,如果目标txt文件的编码和默认编码不一致,会出现读取内容为空的情况,且不会主动抛出异常。
  • 目标目录无有效txt文件:你选择的目录下实际不存在.txt后缀的文件,导致匹配结果为空。
修复方案

修正后的代码如下:

import glob
import os
from tkinter.filedialog import askdirectory


data_directory = askdirectory(initialdir='/Users/vinicius/Desktop/Assignment 3 - CISC 121/Documents_1')
# 用os.path.join拼接路径,兼容不同操作系统的分隔符
text_files = glob.glob(os.path.join(data_directory, "*.txt"))
data_directory_stop = '/Users/vinicius/PycharmProjects/Assignment_2/StopWords.txt'

# 新增匹配结果判断,方便排查
if not text_files:
    print(f"当前选中目录{data_directory}下未找到任何txt文件")
else:
    print(f"匹配到{len(text_files)}个txt文件:{text_files}")

stop_word = []
with open(data_directory_stop, 'r', encoding='utf-8') as stop:
  for x in stop:
    x = x.strip('\n')
    stop_word.append(x)
print(stop_word)

lista = []
for x in text_files:
  # 读取文件时指定编码,避免编码不匹配导致读取异常
  with open(x, 'r', encoding='utf-8') as text:
        lista.append(text.read())
print(lista)
print(text_files)
print(data_directory)

核心修改点

  • 引入os模块,使用os.path.join()拼接路径,自动适配不同操作系统的路径分隔符规则,解决硬编码路径分隔符导致的匹配失败问题。
  • open()函数新增encoding='utf-8'参数,若你使用的txt文件为其他编码(如GBK),替换对应编码值即可。
  • 新增匹配结果判断逻辑,匹配不到文件时主动输出提示,方便快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:57:03