C:\Users\FMR\AppData\Local\Programs\Python\Python39\python.exe D:\中医智能诊疗系统\智能中医系统\康熙字典\提取目录存书.py 文件路径: C:/Users/FMR/Downloads/伤寒论原文打印版.doc 进程已结束,退出代码为 -1073740791 (0xC0000409)

时间: 2025-09-13 19:56:43 AIGC 浏览: 2
你遇到的错误: ``` 退出代码为 -1073740791 (0xC0000409) ``` 是 Windows 系统下常见的 **“未处理的异常”** 错误,通常意味着程序在运行时发生了 **内存访问冲突** 或 **堆栈溢出**,尤其常见于 **C/C++ 扩展模块(如 PyQt、docx、pymysql 等)** 中。 --- ## 🧨 错误分析:`-1073740791 (0xC0000409)` 是什么? 这个错误码在 Windows 中表示: > `STATUS_STACK_OVERFLOW`(堆栈溢出)或 **缓冲区溢出、非法内存访问** 常见于: - PyQt5 与某些 Windows 版本或显卡驱动不兼容; - 使用了损坏的 `.doc` 文件; - 使用了不兼容的 Python 扩展模块; - 多线程或递归调用导致堆栈溢出; - 第三方库版本冲突(如 `python-docx`、`pymysql`、`PyQt5` 等); --- ## 📋 你提供的日志分析: ``` 文件路径: C:/Users/FMR/Downloads/伤寒论原文打印版.doc ``` 说明: - 文件路径已正确读取; - 可能问题出在 `.doc` 文件读取或后续处理过程中; - 如果是 `.doc`(不是 `.docx`),`python-docx` 无法处理,会报错或崩溃; - 如果是 `.docx`,可能内容格式复杂,导致解析异常。 --- ## ✅ 解决方案与优化建议 ### ✅ 1. 确认文件格式是否为 `.docx` 你当前代码中使用的是 `python-docx` 模块: ```python from docx import Document ``` **只能处理 `.docx` 格式**,不能处理 `.doc` 格式。 #### ✅ 解决方法: - 将 `.doc` 文件转换为 `.docx`(可用 Word 打开后另存为 `.docx`); - 或者使用 `pywin32`(仅限 Windows)读取 `.doc` 文件: ```python import win32com.client def read_doc_file(file_path): word = win32com.client.Dispatch("Word.Application") word.Visible = False doc = word.Documents.Open(file_path) text = doc.Content.Text doc.Close() word.Quit() return text ``` --- ### ✅ 2. 更新或重装 PyQt5 和 python-docx 有时 PyQt5 的某些版本在 Windows 上会崩溃,建议升级: ```bash pip install --upgrade PyQt5 python-docx pymysql ``` 或使用虚拟环境: ```bash python -m venv venv venv\Scripts\pip install PyQt5 python-docx pymysql ``` --- ### ✅ 3. 添加异常捕获防止崩溃 在 `extract_chapters` 方法中添加更全面的异常捕获: ```python def extract_chapters(self): try: doc = Document(self.file_path) full_text = "\n".join([para.text for para in doc.paragraphs]) ... except Exception as e: print("提取章节失败:", e) return [] ``` --- ### ✅ 4. 检查是否是 PyQt5 的 bug(常见于 Windows) - 如果你使用的是 PyQt5.15.x,可能会遇到这个崩溃; - **建议**:升级到 **PySide6** 或 **PyQt6**,它们更稳定,兼容性更好。 --- ## ✅ 优化后的 `extract_chapters` 方法(增强健壮性) ```python def extract_chapters(self): try: doc = Document(self.file_path) full_text = "\n".join([para.text for para in doc.paragraphs]) parts = CHAPTER_PATTERN.split(full_text) if parts and parts[0] == '': parts = parts[1:] chapters = [] for i in range(0, len(parts), 2): if i + 1 >= len(parts): break chapter_title = parts[i].strip() content = parts[i + 1].strip() if chapter_title and content: chapters.append((chapter_title, content)) return chapters except Exception as e: print("提取章节失败:", e) return [] ``` --- ## ✅ 附加建议:使用日志记录代替 print() 使用 `logging` 模块代替 `print()`,方便排查问题: ```python import logging logging.basicConfig(level=logging.DEBUG, filename='app.log', filemode='w', format='%(asctime)s - %(levelname)s - %(message)s') # 示例: logging.debug("文件路径: %s", self.file_path) ``` --- ## ✅ 总结排查流程 | 步骤 | 检查内容 | |------|----------| | 1 | 文件是否为 `.docx` 格式? | | 2 | 是否使用了 `win32com` 来读取 `.doc`? | | 3 | PyQt5 是否是最新版?是否考虑切换到 PySide6? | | 4 | 是否在关键函数中添加了异常捕获? | | 5 | 是否使用了虚拟环境?依赖是否干净? | | 6 | 是否使用日志记录代替 print()? | --- ##
阅读全文

相关推荐

:\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

最新推荐

recommend-type

【scratch2.0少儿编程-游戏原型-动画-项目源码】雷电战机穿越隧道.zip

资源说明: 1:本资料仅用作交流学习参考,请切勿用于商业用途。更多精品资源请访问 https://blog.csdn.net/ashyyyy/article/details/146464041 2:一套精品实用scratch2.0少儿编程游戏、动画源码资源,无论是入门练手还是项目复用都超实用,省去重复开发时间,让开发少走弯路!
recommend-type

【scratch2.0少儿编程-游戏原型-动画-项目源码】猫抓老鼠.zip

资源说明: 1:本资料仅用作交流学习参考,请切勿用于商业用途。更多精品资源请访问 https://blog.csdn.net/ashyyyy/article/details/146464041 2:一套精品实用scratch2.0少儿编程游戏、动画源码资源,无论是入门练手还是项目复用都超实用,省去重复开发时间,让开发少走弯路!
recommend-type

quarkus-axon-tokenstore-jpa-deployment-0.1.0-RC5-javadoc.jar

quarkus-axon-tokenstore-jpa-deployment-0.1.0-RC5-javadoc.jar
recommend-type

【scratch2.0少儿编程-游戏原型-动画-项目源码】碎片钢琴.zip

资源说明: 1:本资料仅用作交流学习参考,请切勿用于商业用途。更多精品资源请访问 https://blog.csdn.net/ashyyyy/article/details/146464041 2:一套精品实用scratch2.0少儿编程游戏、动画源码资源,无论是入门练手还是项目复用都超实用,省去重复开发时间,让开发少走弯路!
recommend-type

【scratch2.0少儿编程-游戏原型-动画-项目源码】迷宫.zip

资源说明: 1:本资料仅用作交流学习参考,请切勿用于商业用途。更多精品资源请访问 https://blog.csdn.net/ashyyyy/article/details/146464041 2:一套精品实用scratch2.0少儿编程游戏、动画源码资源,无论是入门练手还是项目复用都超实用,省去重复开发时间,让开发少走弯路!
recommend-type

研究Matlab影响下的神经数值可复制性

### Matlab代码影响神经数值可复制性 #### 标题解读 标题为“matlab代码影响-neural-numerical-replicability:神经数值可复制性”,该标题暗示了研究的主题集中在Matlab代码对神经数值可复制性的影响。在神经科学研究中,数值可复制性指的是在不同计算环境下使用相同的算法与数据能够获得一致或相近的计算结果。这对于科学实验的可靠性和结果的可验证性至关重要。 #### 描述解读 描述中提到的“该项目”着重于提供工具来分析不同平台下由于数值不精确性导致的影响。项目以霍奇金-赫克斯利(Hodgkin-Huxley)型神经元组成的简单神经网络为例,这是生物物理神经建模中常见的模型,用于模拟动作电位的产生和传播。 描述中提及的`JCN_2019_v4.0_appendix_Eqs_Parameters.pdf`文件详细描述了仿真模型的参数与方程。这些内容对于理解模型的细节和确保其他研究者复制该研究是必不可少的。 该研究的实现工具选用了C/C++程序语言。这表明了研究的复杂性和对性能的高要求,因为C/C++在科学计算领域内以其高效性和灵活性而广受欢迎。 使用了Runge–Kutta四阶方法(RK4)求解常微分方程(ODE),这是一种广泛应用于求解初值问题的数值方法。RK4方法的精度和稳定性使其成为众多科学计算问题的首选。RK4方法的实现借助了Boost C++库中的`Boost.Numeric.Odeint`模块,这进一步表明项目对数值算法的实现和性能有较高要求。 #### 软件要求 为了能够运行该项目,需要满足一系列软件要求: - C/C++编译器:例如GCC,这是编译C/C++代码的重要工具。 - Boost C++库:一个强大的跨平台C++库,提供了许多标准库之外的组件,尤其是数值计算相关的部分。 - ODEint模块:用于求解常微分方程,是Boost库的一部分,已包含在项目提供的文件中。 #### 项目文件结构 从提供的文件列表中,我们可以推测出项目的文件结构包含以下几个部分: - **项目树源代码目录**:存放项目的主要源代码文件。 - `checkActualPrecision.h`:一个头文件,可能用于检测和评估实际的数值精度。 - `HH_BBT2017_allP.cpp`:源代码文件,包含用于模拟霍奇金-赫克斯利神经元网络的代码。 - `iappDist_allP.cpp` 和 `iappDist_allP.h`:源代码和头文件,可能用于实现某种算法或者数据的分布。 - `Makefile.win`:针对Windows系统的编译脚本文件,用于自动化编译过程。 - `SpikeTrain_allP.cpp` 和 `SpikeTrain_allP.h`:源代码和头文件,可能与动作电位的生成和传播相关。 - **人物目录**:可能包含项目成员的简介、联系方式或其他相关信息。 - **Matlab脚本文件**: - `图1_as.m`、`图2_as.m`、`图2_rp`:这些文件名中的"as"可能表示"assembled",而"rp"可能指"reproduction"。这些脚本文件很可能用于绘制图表、图形,以及对模拟结果进行后处理和复现实验。 #### 开源系统标签 标签“系统开源”指的是该项目作为一个开源项目被开发,意味着其源代码是公开的,任何个人或组织都可以自由获取、修改和重新分发。这对于科学计算来说尤为重要,因为开放代码库可以增进协作,加速科学发现,并确保实验结果的透明度和可验证性。 #### 总结 在理解了文件中提供的信息后,可以认识到本项目聚焦于通过提供准确的数值计算工具,来保证神经科学研究中模型仿真的可复制性。通过选择合适的编程语言和算法,利用开源的库和工具,研究者们可以确保其研究结果的精确性和可靠性。这不仅有助于神经科学领域的深入研究,还为其他需要高精度数值计算的科研领域提供了宝贵的经验和方法。
recommend-type

MySQL数据库索引失效案例分析与解决方案(索引失效大揭秘)

# 摘要 MySQL索引失效是数据库性能优化中的关键问题,直接影响查询效率与系统响应速度。本文系统分析了索引的基本机制与失效原理,包括B+树结构、执行计划解析及查询优化器的工作逻辑,深入探讨了索引失效的典型场景,如不规范SQL写法、复合索引设计不当以及统
recommend-type

TS语言

### TypeScript 简介 TypeScript 是一种由 Microsoft 开发的开源编程语言,它是 JavaScript 的超集,这意味着所有的 JavaScript 代码都是合法的 TypeScript 代码。TypeScript 扩展了 JavaScript 的语法,并通过类型注解提供编译时的静态类型检查,从而使得代码更易于维护、理解和调试。TypeScript 可以在任何操作系统上运行,并且可以编译出纯净、简洁的 JavaScript 代码,这些代码可以在任何浏览器上、Node.js 环境中,或者任何支持 ECMAScript 3(或更高版本)的 JavaScript 引
recommend-type

Leaflet.Graticule插件:创建经纬度网格刻度

标题“Leaflet.Graticule:经纬线网格”指向的是Leaflet.js的一个插件,它用于在地图上生成经纬度网格线,以辅助进行地图定位与参考。从描述中,我们可以提取到几个关键知识点: 1. Leaflet.Graticule插件的使用目的和功能:该插件的主要作用是在基于Leaflet.js库的地图上绘制经纬度网格线。这可以帮助用户在地图上直观地看到经纬度划分,对于地理信息系统(GIS)相关工作尤为重要。 2. 插件的构造函数和参数:`L.graticule(options)`是创建Graticule图层的JavaScript代码片段。其中`options`是一个对象,可以用来设置网格线的显示样式和间隔等属性。这表明了插件的灵活性,允许用户根据自己的需求调整网格线的显示。 3. interval参数的含义:`interval`参数决定了网格线的间隔大小,以度为单位。例如,若设置为20,则每20度间隔显示一条网格线;若设置为10,则每10度显示一条网格线。这一参数对于调节网格线密度至关重要。 4. style参数的作用:`style`参数用于定义网格线的样式。插件提供了自定义线的样式的能力,包括颜色、粗细等,使得开发者可以根据地图的整体风格和个人喜好来定制网格线的外观。 5. 实例化和添加到地图上的例子:提供了两种使用插件的方式。第一种是直接创建一个基本的网格层并将其添加到地图上,这种方式使用了插件的默认设置。第二种是创建一个自定义间隔的网格层,并同样将其添加到地图上。这展示了如何在不同的使用场景下灵活运用插件。 6. JavaScript标签的含义:标题中“JavaScript”这一标签强调了该插件是使用JavaScript语言开发的,它是前端技术栈中重要的部分,特别是在Web开发中扮演着核心角色。 7. 压缩包子文件的文件名称列表“Leaflet.Graticule-master”暗示了插件的项目文件结构。文件名表明,这是一个典型的GitHub仓库的命名方式,其中“master”可能代表主分支。通常,开发者可以在如GitHub这样的代码托管平台上找到该项目的源代码和文档,以便下载、安装和使用。 综上所述,可以得知,Leaflet.Graticule插件是一个专为Leaflet地图库设计的扩展工具,它允许用户添加自定义的经纬度网格线到地图上,以帮助进行地图的可视化分析。开发者可以根据特定需求通过参数化选项来定制网格线的属性,使其适应不同的应用场景。通过学习和使用该插件,可以增强地图的交互性和信息的传递效率。
recommend-type

【MySQL数据库性能提升秘籍】:揭秘性能下降幕后真凶及解决策略

# 摘要 MySQL性能问题在实际应用中普遍存在,但其表象复杂且易引发认知误区。本文系统分析了导致MySQL性能下降的核心原因,涵盖查询语句结构、数据库配置、表结构设计等多个技术层面,并结合性能监控工具与执行计划解析,提供了全面的问题诊断方法。在此基础上,文章深入探讨了索引优化、查询重写、分库分表等高级调优策略,并通过真实案例总结了可行的最佳实践