文件处理回溯错误:文件未找到问题求助
解决循环读取文件夹文件时的File Not Found错误
你的问题核心出在文件路径拼接不完整和未过滤文件夹条目上,我来帮你拆解问题并给出修复方案:
错误原因分析
你用os.listdir(path)获取的只是目标文件夹里的文件名/子文件夹名,并非完整文件路径。当你直接尝试打开filename时,Python会在当前工作目录中查找这个文件,而非你指定的folder-test目录。另外,如果目标文件夹里存在子文件夹,循环到子文件夹时试图打开它,也会触发"File Not Found"错误(本质是试图打开一个文件夹而非文件)。
修正后的代码
import os import sys import bz2 import glob path = 'C://Users/sauris/Desktop/pyfile/folder-test' # 遍历目标路径下的所有条目 for filename in os.listdir(path): # 拼接完整文件路径,确保Python能准确定位文件 full_file_path = os.path.join(path, filename) # 先判断当前条目是否是文件,跳过子文件夹 if os.path.isfile(full_file_path): try: # 使用with语句自动管理文件句柄,避免资源泄漏 with open(full_file_path, 'r', encoding='utf-8') as f: first_line = f.readline().strip() print(f"处理文件:{filename},第一行内容:{first_line}") # 这里可以将first_line加入你的现有列表进行匹配操作 except Exception as e: # 捕获并打印具体错误,方便排查问题 print(f"处理文件 {filename} 时出错:{str(e)}")
关键优化点
- 用
os.path.join()拼接完整路径,彻底解决文件定位问题 - 增加
os.path.isfile()判断,跳过文件夹,避免无效的文件打开操作 - 使用
with语句自动关闭文件,比手动调用close()更安全可靠 - 扩展异常捕获范围,能明确看到是哪个文件触发了错误,便于排查
如果你的目标文件包含bz2压缩格式,可以在try块里根据文件后缀判断,改用bz2.open()来读取。
内容的提问来源于stack exchange,提问作者kumar saurabh
相关产品推荐
相关产品推荐

