Python批量读取多个txt存入DataFrame报FileNotFoundError问题
报错原因
- 核心触发原因:代码第二步通过
os.path.splitext()拆分文件名时,将去掉.txt后缀的纯文件名存入了filelist列表,第三步循环读取时传入的是不带后缀的文件名,系统找不到对应名称的文件,直接触发FileNotFoundError。 - 原代码存在额外逻辑偏差:就算补全文件后缀,
pd.read_csv()会按结构化表格规则读取txt,把文件内的每一行文本拆成DataFrame的独立行,完全不符合你单个文件完整内容作为DataFrame单独一行的需求;且循环中使用的df.append()方法已在新版Pandas中弃用,运行效率极低。
修正方案
直接遍历带完整后缀的txt文件,用Python原生文件接口读取单文件完整内容,先把所有数据存入列表再一次性生成DataFrame,既解决文件找不到的问题,也匹配你的存储需求,参考代码如下:
import pandas as pd import os import glob # 目标文件目录 my_dir = "/content/drive/My Drive/MICUSP_G0" os.chdir(my_dir) data_list = [] # 直接遍历所有后缀为txt的完整文件 for file in glob.glob("*.txt"): # 提取不带后缀的文件名 file_name = os.path.splitext(file)[0] # 读取文件完整文本内容,若遇编码报错可将utf-8替换为gbk、latin-1尝试 with open(file, 'r', encoding='utf-8') as f: content = f.read() # 单文件数据存入列表,可根据需要调整列名 data_list.append({ "filename": file_name, "text_content": content }) # 批量生成DataFrame df = pd.DataFrame(data_list) print(df)
运行后生成的DataFrame中,每一行对应一个txt文件,分别存储文件名和对应散文的完整文本内容。
内容的提问来源于stack exchange,提问作者Sangeun
相关产品推荐
相关产品推荐

