如何用Python读取文件夹多文本文件?遇FileNotFoundError求解决
解决FileNotFoundError:读取文件夹内文本文件的正确姿势
嘿,这问题我太熟了——你踩了相对路径和完整路径混淆的坑!
问题根源
os.listdir(path) 返回的仅仅是目标文件夹里的文件名,比如 '0106_Car_vehicles_part_falls_on_the_roadway.txt',但当你直接用 open(fle) 时,Python会在当前工作目录(不是你指定的 path 文件夹)里找这个文件,自然就找不到啦。
修复方案:拼接完整文件路径
你已经尝试了用 os.path.join(),这里给你补全完整的可运行代码,确保每一步都正确:
import os # 注意:这里的path必须是文件夹路径!如果你的News_txt.txt是文件夹的话 path = "MyNews_AccidentDataset/News_txt.txt" all_files = os.listdir(path) new_list = [] for fle in all_files: # 拼接文件夹路径和文件名,得到完整的文件路径 full_file_path = os.path.join(path, fle) # 打开文件时使用完整路径,建议指定编码避免乱码/读取失败 with open(full_file_path, encoding="utf-8") as f: text = f.read() new_list.append(text)
额外优化:用pathlib更简洁(Python3.4+)
如果你用的是较新的Python版本,推荐用 pathlib 模块,它的路径处理更直观,还能自动过滤非txt文件:
from pathlib import Path # 同样确保path是文件夹路径 path = Path("MyNews_AccidentDataset/News_txt.txt") new_list = [] # 遍历文件夹下的所有txt文件 for txt_file in path.glob("*.txt"): with open(txt_file, encoding="utf-8") as f: new_list.append(f.read())
小提醒
- 一定要确认你的
path是文件夹路径,不是单个文件的路径!如果News_txt.txt是单个文件,那你之前的os.listdir()本身就会报错,这点要检查清楚。 - 加上
encoding="utf-8"可以避免很多因为文件编码不一致导致的读取错误。
内容的提问来源于stack exchange,提问作者JChat
相关产品推荐
相关产品推荐

