# 📂 Directory Scanner (目录扫描器) 一款现代化、高性能的本地文件目录扫描工具,能够快速生成交互式的 HTML 结构报告。基于 Python + PyQt6 开发,采用 Win11 风格的无边框 UI 设计。 ## ✨ 主要特性 * **🚀 极速扫描**:采用多线程 (`concurrent.futures`) + `os.scandir` 技术,大幅提升大文件夹的扫描速度。 * **📊 可视化报告**: * 生成单文件 HTML 报告,易于分享。 * **双视图模式**:支持传统的**树形列表**和**矩形树图 (Treemap)**(基于 ECharts),直观展示文件大小分布。 * **懒加载渲染**:采用 Lazy Rendering 技术,轻松应对包含数十万文件的超大规模目录,网页打开秒开不卡顿。 * **智能搜索**:HTML 报告内置全量搜索功能,支持自动定位和展开深层目录。 * **🎨 现代化 UI**: * PyQt6 构建的无边框窗口。 * 支持窗口阴影、自定义标题栏、拖拽移动。 * 自动识别文件类型并显示对应的 Emoji 图标。 * **📁 多目录支持**:支持一次性添加多个文件夹进行批量扫描,生成汇总报告。 * **🛠️ 独立运行**:支持打包为 EXE 可执行文件,无需 Python 环境即可运行。 ## 🛠️ 技术栈 * **GUI**: Python 3, PyQt6 * **Frontend**: HTML5, CSS3, Vanilla JS, ECharts * **Performance**: ThreadPoolExecutor, JSON Data Injection, DOM Fragmentation ## 📦 安装与运行 ### 源码运行 1. 克隆或下载本项目。 2. 安装依赖: ```bash pip install PyQt6 ``` 3. 运行程序: ```bash python dir_scanner_gui.py ``` ### 打包为 EXE 如果你需要生成独立的可执行文件,可以使用 `pyinstaller`: ```powershell # 安装 PyInstaller pip install pyinstaller # 执行打包命令(自动添加图标和时间戳命名) $name = "DirectoryScanner_" + (Get-Date -Format "yyyyMMdd_HHmmss") pyinstaller --noconsole --onefile --icon="logo.png" --add-data "logo.png;." --name="$name" dir_scanner_gui.py ``` 打包完成后,EXE 文件将生成在 `dist` 目录下。 ## 🖥️ 使用说明 1. **添加目录**:点击界面上的 `➕` 按钮选择一个或多个文件夹。 2. **设置输出**:默认会在当前目录下生成带时间戳的 HTML 报告,也可以手动修改保存路径。 3. **开始扫描**:点击“开始扫描”按钮,等待进度条完成。 4. **查看报告**:扫描完成后,可直接点击对话框中的“打开报告”查看结果。 ## 📝 更新日志 * **v1.2**: 优化网页搜索功能,支持全量搜索与自动跳转;修复任务栏图标显示问题。 * **v1.1**: 新增 ECharts 矩形图视图;优化 HTML 生成逻辑(体积减小 90%);UI 细节打磨。 * **v1.0**: 初始版本,支持多线程扫描与 PyQt6 无边框界面。 --- *Created by Trae AI Assistant*