# FileCompare **Repository Path**: ZhangYu-Home/file-compare ## Basic Information - **Project Name**: FileCompare - **Description**: 文件对比能力 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-07 - **Last Updated**: 2026-02-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 目录差异比对服务器 一个基于 Web 的目录比对工具,支持实时查看文件差异。使用 Python 内置的 `http.server` 构建,无需任何外部依赖。 ## 功能特性 - **Web 界面**:通过浏览器访问 - **树形结构**:以目录树形式展示文件 - **懒加载**:按需加载差异内容 - **实时比对**:即时比较两个目录 - **语法高亮**:用颜色标注新增、删除和修改 - **自动刷新**:可选每 5 秒自动更新 - **访问控制**:限制可访问的目录 - **预配置目录**:启动时指定目录,快速比对 ## 系统要求 - Python 3.6 或更高版本 - 无需外部依赖 ## 安装 将文件放在同一目录下: ``` Scripts/ ├── dir_diff_server.py └── dir_diff_web.html ``` ## 使用方法 ### 基本用法 ```bash # 启动服务器(默认端口 5000) python dir_diff_server.py # 指定端口 python dir_diff_server.py -p 8080 # 允许外部网络访问 python dir_diff_server.py -H 0.0.0.0 ``` 然后在浏览器中打开 `http://127.0.0.1:5000` ### 命令行参数 | 参数 | 说明 | |------|------| | `-p, --port` | 端口号(默认:5000) | | `-H, --host` | 绑定地址(默认:127.0.0.1) | | `-a, --allow-dir` | 允许访问的目录(可多次指定) | | `--dir1` | 预配置第一个比对目录 | | `--dir2` | 预配置第二个比对目录 | ### 使用示例 #### 启动时预配置目录 ```bash python dir_diff_server.py --dir1 /home/user/project/v1 --dir2 /home/user/project/v2 ``` 浏览器打开后会自动加载这两个目录并执行比对。 #### 限制可访问的目录 ```bash python dir_diff_server.py --allow-dir /home/user/projects --allow-dir /home/user/work ``` 只允许访问和比对指定目录内的文件。 #### 组合使用 ```bash python dir_diff_server.py -p 8080 -H 0.0.0.0 \ --dir1 /home/user/project/v1 \ --dir2 /home/user/project/v2 \ --allow-dir /home/user/project ``` ## Web 界面说明 ### 选择目录 1. **手动输入**:直接在输入框中输入目录路径 2. **浏览对话框**:点击 📂 按钮打开目录浏览器 - 点击文件夹进入该目录 - 点击 "选择当前目录" 选中该目录 - 按 Enter 或点击 "选择" 按钮选中输入框中的路径 3. **预配置**:如果启动时指定了 `--dir1` 和 `--dir2`,会自动加载 ### 比对结果 比对结果分为四个类别: | 类别 | 说明 | |------|------| | **已修改** | 两个目录都存在但内容不同的文件 | | **仅在目录2** | 只存在于第二个目录的文件/文件夹(新增) | | **仅在目录1** | 只存在于第一个目录的文件/文件夹(删除) | | **相同** | 两个目录中相同的文件 | ### 查看差异 1. 点击任意**已修改**的文件查看差异 2. 差异查看器显示: - 绿色行:新增内容 - 红色行:删除内容 - 灰色行:未改变的上下文 3. 点击 "← 返回目录树" 回到文件列表 ### 目录树导航 - 点击 `▶` 展开/折叠文件夹 - 点击 "全部展开" 展开所有文件夹 - 点击 "全部折叠" 折叠所有文件夹 ### 自动更新 开启自动更新功能,每 5 秒自动刷新比对结果: - 点击页面底部的开关 - 适合监控实时变化的场景 ## 安全性 ### 目录访问控制 默认情况下,服务器允许访问所有目录。要限制访问: ```bash python dir_diff_server.py --allow-dir /home/user/projects ``` 这样只能访问 `/home/user/projects` 目录内的文件。 ### 网络访问 服务器默认绑定到 `127.0.0.1`(仅本机)。要允许网络访问: ```bash python dir_diff_server.py -H 0.0.0.0 ``` **警告**:在公网暴露服务器时,务必使用 `--allow-dir` 限制可访问的目录。 ## 忽略的目录 以下目录会在比对时自动忽略: - `.git` - `__pycache__` - `.idea` - `.vscode` - `node_modules` - `.venv`、`venv`、`env` - `dist`、`build` - `.pytest_cache` ## 使用技巧 1. **快速比对**:启动时预配置目录,打开即自动比对 2. **大型项目**:树形结构便于高效导航大型代码库 3. **监控变化**:开启自动更新实时跟踪变更 4. **安全使用**:在共享网络运行时务必限制目录访问 ## 故障排除 ### 端口被占用 ```bash # 使用其他端口 python dir_diff_server.py -p 8080 ``` ### 访问被拒绝 - 确保目录在允许列表中(如果使用了 `--allow-dir`) - 检查文件权限 ### 页面无法加载 - 确认 `dir_diff_server.py` 和 `dir_diff_web.html` 在同一目录 - 查看控制台输出的错误信息 ## 许可证 MIT License