Python跨目录访问文件报错:[Errno 2] 文件或目录不存在
问题解决:文件找不到错误(Errno 2)
错误根源
你调用open()时只传入了文件名,Python默认会在当前脚本运行的目录里查找文件,但你的目标文件实际存在path变量指定的文件夹中,路径不匹配导致找不到文件。另外你原代码里的for model in l:循环完全没用到model变量,属于冗余代码,直接删掉就行。
修正方案
方案1:按坐标范围逐个打开指定文件
用os.path.join()把目标文件夹路径和文件名拼接成完整路径,这是跨平台的安全写法:
import os path = r"C:\Users\M S I\Desktop\TA MACHINE LERANING\MODEL SKENARIO UJI 1" # 遍历坐标范围,拼接完整路径后打开文件 for Coor_X in range(1, 18): for Coor_y in range(1, 25): # 拼接完整文件路径 file_path = os.path.join(path, f'model joblib [{Coor_X} {Coor_y}]') try: with open(file_path, 'rb') as f: print(f"成功打开文件: {file_path}") # 这里可以添加读取文件的逻辑,比如 model = joblib.load(f) except FileNotFoundError: print(f"警告:文件不存在: {file_path}")
方案2:直接遍历目标文件夹内所有匹配文件(更高效)
如果不需要严格按坐标范围遍历,而是想处理文件夹里所有符合命名格式的文件,用glob模块更简洁:
import os import glob path = r"C:\Users\M S I\Desktop\TA MACHINE LERANING\MODEL SKENARIO UJI 1" # 匹配所有"model joblib [X Y]"格式的文件 file_pattern = os.path.join(path, 'model joblib [* *]') for file_path in glob.glob(file_pattern): with open(file_path, 'rb') as f: print(f"成功打开文件: {file_path}") # 这里添加文件处理逻辑
注意事项
- 确保代码生成的文件名和实际文件名完全一致,包括空格、括号等符号,避免因拼写错误导致找不到文件
- 加入
try-except捕获FileNotFoundError可以避免程序直接崩溃,方便排查缺失的文件
内容的提问来源于stack exchange,提问作者Rizky Alvian
相关产品推荐
相关产品推荐

