# AIlearn **Repository Path**: weiner111/ailearn ## Basic Information - **Project Name**: AIlearn - **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-08-12 - **Last Updated**: 2026-08-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AILearn 学习资料助手 AILearn 学习资料助手是第一个验证项目。它使用 Python 扫描指定目录中的 Markdown 学习笔记,并输出每个文件的字数、Markdown 文件总数和总字数。 ## 当前版本功能 - 支持命令行参数输入目录路径; - 不提供参数时,可以交互式输入目录路径; - 递归扫描目录及其子目录; - `.md` 和 `.MD` 文件都会被识别; - 忽略 `.txt` 等非 Markdown 文件; - 支持 UTF-8 和带 BOM 的 UTF-8 文件; - 处理目录不存在、路径不是目录、空目录和文件读取失败等情况; - 只使用 Python 标准库,不需要额外安装第三方包。 ## 字数统计规则 本版本的“字数”指 **Markdown 原始文本中的非空白 Unicode 字符数**: - 空格、换行、制表符和回车不计入; - 中文字符按一个字符计数; - 英文字母逐个计数,例如 `Python` 是 6 个字符; - 标点符号计数; - Markdown 标记也计数,例如标题中的 `#`; - 本版本不进行中文分词,也不解析 Markdown 渲染结果。 例如: ```markdown # 标题 中文 test ``` 统计结果为 9 个非空白字符。 ## 运行程序 在命令提示符中进入项目根目录: ```bat cd /d D:\selfProject\AILearn ``` ### 直接提供目录路径 ```bat python src\main.py "D:\selfProject\AILearn\data" ``` 如果路径包含空格或中文,请使用双引号。 ### 交互式输入路径 ```bat python src\main.py ``` 然后按照提示输入要扫描的目录路径。 ### 查看帮助 ```bat python src\main.py --help ``` ## 输出示例 ```text 扫描目录:D:\selfProject\AILearn\data 统计规则:字数按非空白 Unicode 字符计算 文件:chapter1.md 字数:128 Markdown 文件总数:1 所有文件总字数:128 ``` ## 运行自动化测试 项目使用 Python 标准库 `unittest`,不需要安装 pytest: ```bat cd /d D:\selfProject\AILearn python -m unittest discover -s tests -p "test_*.py" -v ``` ## 退出状态 - `0`:扫描成功,包括空目录; - `1`:部分 Markdown 文件读取失败,程序跳过这些文件并给出警告; - `2`:目录路径不存在、路径不是目录或没有提供路径。 ## 回家测试建议 可以准备一个测试目录,包含: - 一个普通 `.md` 文件; - 一个扩展名为 `.MD` 的文件; - 一个 `.txt` 文件,确认它会被忽略; - 一个子目录以及其中的 Markdown 文件; - 文件名或目录名包含中文; - 路径中包含空格。 然后分别测试: 1. 直接传入目录路径; 2. 不传参数、使用交互式输入; 3. 输入不存在的目录; 4. 输入一个文件路径而不是目录; 5. 修改程序,让文件按照字数从多到少排序。 ## 项目目录 ```text AILearn/ ├── data/ # 测试数据 ├── learning_notes/ # 学习笔记和复盘记录 ├── src/ # 源代码 │ └── main.py ├── tests/ # 自动化测试 │ └── test_main.py ├── plan.md # 项目计划 ├── tracking.md # 项目进度跟踪 └── README.md # 项目运行说明 ```