# FileSearch **Repository Path**: hubu8/file-search ## Basic Information - **Project Name**: FileSearch - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-02 - **Last Updated**: 2026-08-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FileSearch - 文本搜索工具 基于 Python + PyQt5 开发的多线程文本搜索桌面工具,支持在指定目录中递归搜索 Excel、txt、csv、json、Word、PDF 等文件,返回文件名、行号及 Excel 页签名。 ## 功能特性 - 支持 `.txt` / `.csv` / `.json` / `.xlsx` / `.xls` / `.docx` / `.doc` / `.pdf` 文件搜索 - 支持普通关键词搜索(大小写不敏感)和正则表达式搜索 - 多线程并发搜索(QThread + ThreadPoolExecutor) - 文件类型过滤 - 实时进度条显示 - 双击结果行可直接打开文件 - 支持随时取消搜索 - 自动检测文件编码(chardet) ## 项目结构 ``` FileSearch/ ├── main.py # 入口文件 ├── requirements.txt # 依赖清单 ├── ui/ │ └── main_window.py # 主窗口 UI ├── core/ │ ├── models.py # 数据模型 │ ├── searcher.py # 搜索引擎 │ └── parsers/ │ ├── __init__.py # 解析器注册表(工厂方法) │ ├── base_parser.py # 抽象基类 │ ├── txt_parser.py # .txt 解析器 │ ├── csv_parser.py # .csv 解析器 │ ├── json_parser.py # .json 解析器 │ ├── excel_parser.py # .xlsx 解析器 │ ├── docx_parser.py # .docx 解析器 │ ├── doc_parser.py # .doc 解析器 │ └── pdf_parser.py # .pdf 解析器 └── workers/ └── search_worker.py # 搜索工作线程 ``` ## 环境要求 - Python 3.10+ ## 开发运行 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 运行 ```bash python main.py ``` ## 打包为 EXE ### 1. 安装 PyInstaller ```bash pip install pyinstaller ``` ### 2. 打包命令(推荐) 直接复用项目中的 `FileSearch.spec`,不要通过命令行生成新的 spec,否则会覆盖 `collect_all('chardet')` 配置导致 exe 运行报错。 ```bash pyinstaller FileSearch.spec --noconfirm ``` 打包完成后,exe 文件位于 `dist/FileSearch.exe`。 ### 3. 如需重新生成 spec(不推荐) 如果确实需要从 `main.py` 重新生成 spec,请在生成后手动把 `collect_all('chardet')` 相关配置加回去,否则 chardet 5.x 的 mypyc 模块不会被打包。 ## 使用说明 1. 点击 **浏览** 按钮选择搜索目录 2. 输入搜索关键词 3. 如需正则匹配,勾选 **正则表达式** 4. 通过下拉框选择要搜索的 **文件类型** 5. 点击 **搜索** 开始,搜索过程中可随时点击 **停止** 6. 双击结果行可打开对应文件 ## 技术栈 | 组件 | 选型 | |------|------| | GUI | PyQt5 | | Excel 解析 | openpyxl | | Word (.docx) 解析 | python-docx | | 旧版 Word (.doc) 解析 | olefile(尽力解析) | | PDF 解析 | PyPDF2 | | 编码检测 | chardet | | 多线程 | QThread + ThreadPoolExecutor |