第二次作业
作业属于哪个课程 | https://edu.cnblogs.com/campus/zjlg/rjjc |
---|---|
作业目标 | 实现一个命令行文本计数统计程序 |
姓名-学号 | 祝方略-2022329301131 |
码云仓库网址 | https://gitee.com/zhu-fangzhi/museum-integrated-management-system#museum-integrated-management-system |
详细的代码请点击上面的码云仓库地址
文件统计工具
一、简介
这是一个 Python 脚本工具,用于统计指定文本文件中的字符数、单词数、代码行数、空行数和注释行数。该工具支持从命令行传入参数来选择需要统计的内容类型。
二、功能概述
- 字符数统计:计算文件中的总字符数。
- 单词数统计:计算文件中的总单词数。
- 行数统计:
- 代码行数:实际包含代码的行数。
- 空行数:没有任何内容的行数。
- 注释行数:以 # 或 // 开头的行数。
三、文件概述
- base.txt 是基础测试文件
- img.png 是命令行运行结果
- Main.py 是主程序入口
- UnitTest.py 是单元测试
四、安装步骤
此脚本基于 Python 3.x 开发,无需额外的第三方库。确保你的环境中已经安装了 Python 3.x 版本。
安装 Python
如果你还没有安装 Python,可以从官方网站下载安装包并按照指示进行安装: https://www.python.org/downloads/
五、使用方法
1.命令行参数
- python Main.py
2.可用选项
- -c 或 --characters:统计文件中的字符数。
- -w 或 --words:统计文件中的单词数。
- -l 或 --lines:统计文件中的代码行数、空行数和注释行数。
3.运行示例
- 统计字符数
python Main.py -c example.txt - 统计单词数
python Main.py -w example.txt - 统计行数
python Main.py -l example.txt
4.输出示例
- 字符数统计
Number of characters in 'example.txt': 123 - 单词数统计
Number of words in 'example.txt': 20
- 行数统计
Lines statistics for 'example.txt':
Code lines: 10
Empty lines: 5
Comment lines: 3
六、注意事项
- 确保在运行脚本之前,文件路径是正确的,并且文件是可以访问的。
- 本脚本默认假设文件编码为 UTF-8。如果文件使用了不同的编码,请在脚本中相应修改。
- 如果文件非常大,这个脚本可能会消耗较多内存。对于极大数据集,考虑使用更高效的方法。
- 当前脚本仅支持单行注释(以 # 或 // 开头)。对于其他注释风格,如多行注释,可能需要扩展脚本功能。
测试 - 为了确保脚本的功能正确性,我们还提供了一个单元测试脚本 UnitTest.py。你可以使用以下命令来运行测试:
python UnitTest.py
七、心得体会
完成这个命令行文本计数统计程序的作业,我深刻体会到了软件开发的全过程,从需求分析到设计、编码、测试,再到版本控制和性能测试。这个过程不仅锻炼了我的编程能力,还提高了我的问题解决能力和项目管理技能。
- 在项目初期,我首先理解了作业要求,并在码云上注册了自己的账号,创建了项目仓库。我意识到,一个清晰的项目结构和文档对于后续的开发和维护至关重要。因此,我在项目的README.md文件中详细记录了项目的简介、用法、文件列表和例程运行结果,确保即使是其他开发者也能快速理解我的项目。
- 在编码阶段,我首先实现了基础功能,即统计字符数、单词数和句子数。我选择了Python语言进行开发,因为它简洁且拥有丰富的库支持,特别适合处理文本数据。我编写了命令行界面,让用户可以通过参数选择不同的统计功能。在实现这些功能时,我学习了如何使用正则表达式来识别单词和句子的边界,这是一项非常实用的技能。
- 随后,我进行了版本控制,将基础功能作为v0.2版本提交到了码云。这个过程让我意识到了版本控制的重要性,它不仅帮助我追踪代码的变化,还让我能够在遇到问题时回退到之前的版本。
- 为了实现扩展功能,我增加了统计代码行、空行和注释行的功能。这个过程中,我深入学习了不同编程语言的注释规则,并编写了相应的正则表达式来识别它们。这个功能的实现提高了我的正则表达式编写能力,并且让我对代码分析有了更深的理解。
- 在测试阶段,我编写了单元测试来验证我的代码。这让我学会了如何设计测试用例,以及如何使用测试框架来自动化测试过程。我还进行了性能测试,以确保我的程序在处理大型文件时仍然高效。这些测试不仅提高了代码的稳定性,还增强了我对软件质量保证的认识。
- 最后,我将扩展功能作为v0.3版本提交,并附上了运行结果的截图。这个作业让我深刻体会到了软件开发的复杂性和挑战性,同时也让我更加自信地面对将来的编程任务。通过这次实践,我不仅提升了自己的技术能力,还学会了如何有效地管理项目和与他人协作。这是一个宝贵的学习经历,我将把这些经验应用到未来的学习和工作中。