Ubuntu 22.04下文件存在却触发FileNotFoundError[Errno2]求助
文件存在但Python提示FileNotFoundError的排查方案
问题场景
代码指定了如下文件路径:
model_weight = "/home/Object-Detection-and-location-RealsenseD435/DNN/engine/yolov3.weights" model_cfg = "/home/Object-Detection-and-location-RealsenseD435/DNN/engine/yolov3.cfg" model_classname= "/home/Object-Detection-and-location-RealsenseD435/DNN/engine/classname.txt"
运行时触发错误:
FileNotFoundError: [Errno 2] No such file or directory: '/home/Object-Detection-and-location-RealsenseD435/DNN/engine/classname.txt'
文件实际存在且可通过文件管理器访问,但Ubuntu 22.04环境下Terminator和PyCharm均报错。
排查解决步骤
验证路径准确性
直接在Terminator中执行ls /home/Object-Detection-and-location-RealsenseD435/DNN/engine/classname.txt,如果命令报错,说明路径存在拼写/大小写错误(Ubuntu区分大小写);如果能正常输出文件名,复制该命令里的路径替换代码中的路径,避免手动输入失误。检查文件与目录权限
- 查看文件权限:执行
ls -l /home/Object-Detection-and-location-RealsenseD435/DNN/engine/classname.txt,确认当前用户拥有读权限(权限位包含r,如-rw-r--r--)。 - 若权限不足,执行
chmod +r /home/Object-Detection-and-location-RealsenseD435/DNN/engine/classname.txt添加读权限;同时确保父目录有执行权限(允许遍历目录):chmod +x /home/Object-Detection-and-location-RealsenseD435/DNN/engine/
- 查看文件权限:执行
排查路径中的隐藏特殊字符
复制粘贴可能带入不可见字符(如全角空格、换行符),在代码中打印路径的原始格式验证:model_classname = "/home/Object-Detection-and-location-RealsenseD435/DNN/engine/classname.txt" print(repr(model_classname))若输出带有多余字符(如
'/home/.../classname.txt\n'),说明路径存在隐藏字符,需重新输入或复制正确路径。检查符号链接有效性
如果classname.txt是符号链接,执行ls -l /home/Object-Detection-and-location-RealsenseD435/DNN/engine/classname.txt查看链接目标,确认目标文件存在且有权限。用系统模块拼接路径测试
使用os.path模块拼接路径,避免手动拼接的错误:import os base_dir = "/home/Object-Detection-and-location-RealsenseD435/DNN/engine" model_classname = os.path.join(base_dir, "classname.txt") print(os.path.exists(model_classname)) # 输出True则路径有效,False需重新排查
内容的提问来源于stack exchange,提问作者gardenOfCheese
相关产品推荐
相关产品推荐

