:\Users\FMR\AppData\Local\Programs\Python\Python39\python.exe D:\中医智能诊疗系统\智能中医系统\门诊\查询向量库.py 【程序启动】开始运行 QApplication 【初始化】开始创建 DiseaseIDViewer 窗口 【UI初始化】开始构建界面布局 【UI初始化】界面布局构建完成 【数据加载】开始加载映射表和疾病数据 【调试】当前工作目录: D:\中医智能诊疗系统\智能中医系统\门诊 【调试】symptom_index 路径: D:\中医智能诊疗系统\智能中医系统\门诊\faiss_data\symptom.index 【调试】description_index 路径: D:\中医智能诊疗系统\智能中医系统\门诊\faiss_data\description.index 【路径检查】symptom_idx_to_id.npy 存在: True 【路径检查】description_idx_to_id.npy 存在: True 【路径检查】symptom_index 存在: True 【路径检查】description_index 存在: True 【加载文件】正在加载 symptom_idx_to_id.npy 【加载文件】正在加载 description_idx_to_id.npy 【ID合并】所有疾病ID集合: {13, 14, 15, 16, 17, 18} 【ID合并】总ID数量: 6 【FAISS】正在加载索引文件: D:\中医智能诊疗系统\智能中医系统\门诊\faiss_data\symptom.index 【FAISS错误】加载失败: Error in __cdecl faiss::FileIOReader::FileIOReader(const char *) at D:\a\faiss-wheels\faiss-wheels\faiss\faiss\impl\io.cpp:68: Error: 'f' failed: could not open D:\中医智能诊疗系统\智能中医系统\门诊\faiss_data\symptom.index for reading: No such file or directory 【FAISS】正在加载索引文件: D:\中医智能诊疗系统\智能中医系统\门诊\faiss_data\description.index 【FAISS错误】加载失败: Error in __cdecl faiss::FileIOReader::FileIOReader(const char *) at D:\a\faiss-wheels\faiss-wheels\faiss\faiss\impl\io.cpp:68: Error: 'f' failed: could not open D:\中医智能诊疗系统\智能中医系统\门诊\faiss_data\description.index for reading: No such file or directory 【主窗口显示】窗口已显示,进入事件循环 【程序退出】事件循环结束 进程已结束,退出代码为 0
时间: 2025-09-03 07:12:45 AIGC 浏览: 24
从你的日志来看,**所有文件都存在**(`os.path.exists` 返回 `True`),但 **FAISS 仍然加载失败**,错误信息是:
```
Error: 'f' failed: could not open D:\中医智能诊疗系统\智能中医系统\门诊\faiss_data\symptom.index for reading: No such file or directory
```
这个错误信息 **非常关键**,它说明:
- ✅ Python 认为文件存在(`os.path.exists` 返回 `True`)
- ❌ FAISS 无法打开文件,报错“**No such file or directory**”
---
## ✅ 问题定位
### ❓ 为什么文件存在,但 FAISS 找不到?
这通常是因为:
### ✅ 1. **路径中包含中文或特殊字符(如“中医”)**
FAISS(特别是 Windows 上的二进制版本)在处理中文路径时可能会失败,尤其是在使用 `faiss.read_index()` 时。
> **FAISS 依赖的底层 C++ 代码在处理路径时使用的是 ANSI 编码**,而不是 Unicode,导致中文路径读取失败。
---
## ✅ 解决方案
### ✅ 方案一:**将路径改为纯英文路径**
#### ✅ 最简单有效的做法:
将你的项目路径从:
```
D:\中医智能诊疗系统\智能中医系统\门诊\faiss_data\
```
改为:
```
D:\MedicalSystem\faiss_data\
```
并更新你的代码中的路径配置:
```python
self.SYMPTOM_INDEX_PATH = r"D:\MedicalSystem\faiss_data\symptom.index"
self.DESCRIPTION_INDEX_PATH = r"D:\MedicalSystem\faiss_data\description.index"
```
---
### ✅ 方案二:**使用短英文别名路径(使用 `os.symlink` 或 `mklink`)**
如果你不能更改原始路径,可以创建一个英文符号链接指向原路径:
```bash
mklink /D D:\MedicalSystem D:\中医智能诊疗系统\智能中医系统\门诊\faiss_data
```
然后 FAISS 使用英文路径访问:
```python
self.SYMPTOM_INDEX_PATH = r"D:\MedicalSystem\symptom.index"
```
---
### ✅ 方案三:**使用 `os.path.realpath()` 和 `os.chdir()`**
你可以尝试在程序开始时切换工作目录到 `.index` 文件所在目录:
```python
os.chdir(r"D:\中医智能诊疗系统\智能中医系统\门诊\faiss_data")
```
然后再调用 `faiss.read_index("symptom.index")`,这样路径会是相对路径,可能避免中文问题。
---
## ✅ 验证方法
你可以用下面的脚本验证 FAISS 是否能正确读取文件:
```python
import faiss
import os
path = r"D:\中医智能诊疗系统\智能中医系统\门诊\faiss_data\symptom.index"
print("路径:", path)
print("文件存在:", os.path.exists(path))
try:
index = faiss.read_index(path)
print("✅ 加载成功,维度:", index.d)
except Exception as e:
print("❌ 加载失败:", e)
```
---
## ✅ 总结
| 问题 | 原因 | 解决方案 |
|------|------|-----------|
| FAISS 加载失败 | 中文路径导致 C++ 底层文件读取失败 | ✅ 改为英文路径或使用符号链接 |
---
###
阅读全文
相关推荐











