一到大学学期课程快要结束的那段时间的时候, 你几乎可以肯定说, 绝大多数那些计算机专业同学、软件工程专业同学还有电子信息相关专业的那些学生朋友们, 基本上肯定会碰到一个同样的特别让人头痛的大麻烦, 这个麻烦就是关于课程里面那个大型作业任务的字数啊什么的, 还有他们写的那个程序代码的行数到底有多少这样一个统计的问题, 所以说这个问题真的是挺让人头疼的。
因为像现在很多各个高校里面的那些期末考试相关的课程设计任务或者说是期末的课程报告内容当中, 其实都是有规定着非常明确的关于代码一共要写多少行这样一个要求的, 如果说写得少一些的话那可能得写个几百行, 而如果写得多一些的化呢那就可能需要写到上千行了。
以前的时候, 我们去统计代码的行数, 只能用那种最笨拙的手动的方式来操作。我们要打开每一个代码文件, 然后逐行地去翻看并且进行计数。这样做不仅速度是非常慢的, 会耗费十几分钟或者二十分钟的时间, 而且还很容易出现统计失误的情况。
空行、注释行以及有效代码行之间是傻傻分不清的, 最后我们只能随便编造一个行数来填充报告。这样做的做法是不严谨的, 万一遇到老师抽查核对的话, 就会导致作业被扣分, 甚至会影响最终的期末成绩。
除此之外, 手动统计还存在许多弊端。如果你的项目里面包含了几十个代码文件, 这些文件分散在不同文件夹里, 还分布在不同的脚本中存储。在这种情况下想要人工一个一个打开去进行统计行为几乎是不可能完成的。
同时还存在另一个问题, 不同编程语言对于注释的格式要求是不一样的, 对于空行的规则设定也各不相同,这样一来人工统计时使用的标准就不统一了, 导致最终得出的数据完全没有参考性可言。
今天给大家分享一款属于万能通用类型的代码行数统计脚本, 该脚本适合零基础的人群直接使用, 并且可以直接复制进行运行操作, 只需要用3秒钟的时间就能扫描完整个项目文件夹区域, 能够精准地分别出总共有多少行, 以及有效代码有多少行, 注释内容占了多少行, 还有空行存在多少行, 本工具支持、C语言、Java、C++等几乎大多主流的语言编程语言形式使用, 这样就可以彻底与手动去统计数据的行为告别了, 同时也摆脱了瞎编撰行数所导致的尴尬局面。
这款脚本的核心逻辑是非常清晰的, 它是完全贴合高校作业统计的标准来设计的。
先把步骤安排一下, 先去遍历那个指定文件夹里面所有的自定义后缀的代码文件, 为了把项目里的代码文件给精准筛选出来, 就要过滤掉文档、图片、配置这些没有关系的文件, 然后第二步, 一个一个读取每一个代码文件里面的全部内容, 做到每一行都要逐行去检查一下字符是什么, 第三步就是利用条件判断的方法来区分开那些空白行、单行注释、多行注释以及有效代码行这几样东西, 针对不一样的类型要分别独立地去计算数量, 最后第四步, 在所有文件都遍历完成了以后, 把所有的数据汇总到一起, 然后输出一个清楚又直观的统计报表。
这个脚本没有使用需要第三方来搞定的复杂依赖关系, 它仅仅使用了系统内置的模块, 所以大家去下载任意一个版本就可以直接运行了, 不需要额外安装其他的库, 也不需要搞那些复杂的配置工作, 它能够适配并支持像 Mac、Linux 这样的全平台系统。
对于计算机专业的那帮大学生来讲, 这么个脚本绝对称得上是期末考试当中的神器玩意儿。不管你们是面对着数据结构课, 还是C语言程序设计课, 又或者是搞那个程序开发作业, 亦或者说做课程设计, 反正只要是涉及到代码项目的活儿, 它都能给你进行一键式的统计操作。
那些精准无误的数据内容, 你们都可以直接拿来填到你们的课程报告里面去, 而且, 这数据都是真实的, 可以追溯得到源, 这样一来, 就能让你们手中的期末作业变得更加规范, 同时也更加专业了起来, 最后还能在老师的眼皮子底下留下一个极好的印象分出来。
与此同时, 这个脚本不光能够在期末作业的时候起作用, 在日常的学习、竞赛项目、以及实训开发之中也都能用得着, 它可以快速统计你的代码工作量情况, 让你能够清清楚楚地看到自己编程方面的积累效果, 从此就告别那种糊里糊涂的自我认知了。
完整可运行代码
os
# 配置参数:统计路径、支持的文件后缀
等于当前目录, 这个设置是可以改成你自己项目的文件夹的绝对路径。
=
是py文件的扩展名, 是c文件的扩展名, 是h文件的扩展名, 是java文件的扩展名, 以及是cpp文件的扩展名。
这是目前支持统计功能的编程语言相关的文件列表。
先把那些用来统计的数据给准备妥当。
= 0 # 总行数
设置为0, 这表示有效代码行的数量。
令其等于零, 这个数值用来表示被注释的行所存在的数量。
将其设置为零, 这代表是空的行数。
将变量设置为等于零, 这样做的目的是为了对文件的总数量进行统计。
def ():
"""统计单个文件代码行数"""
, , ,
使用open函数, 以只读模式打开文件, 设置编码为utf-8, 其他参数留空, 将结果赋值给变量f。
将其设置为假, 这是一个标记用来表示当前是否处于多行注释的状态之中。
for line in f.():
+= 1
等号后面跟着的是line.strip()这段代码。
# 判断空行
如果没有这种情况出现的话。
+= 1
# 处理多行注释
如果。(“*/”: )
= True
+= 1
if .("*/"):
= False
if :
+= 1
if .("*/"):
= False
把单行注释进行处置与处理, 让事情得到解决。
if .("//") or .("#"):
+= 1
到目前为止, 剩下的部分全部都是具备实际功能的代码行数。
+= 1
def ():
"""遍历文件夹所有代码文件"""
对于目录树里的每一个根路径, 连同它下面的所有子文件夹名单以及文件名单子, 咱们都按照遍历操作的规矩去处理一遍。
对于文件集合里的每一个文件。
# 筛选指定后缀文件
if os.path.(file) in :
<强>= os.path.join根号, 文件。
()
+= 1
如果判断的条件等于空字符串。
()
# 把统计的那些个结果, 都给输出出来。
print("=" * 50)
我们执行打印操作, 输出的内容是统计文件总数是零个。
打印出一句内容, 这句内容包含代码文件总行数: {}行。
输出信息, 在信息内部写入有效代码行数的具体数值, 后面紧跟单位, 最终显示的有效代码行数是多少行。
输出注释总行数, 此处数字是{}行。
打印空白总行数, 并且这个数字显示为0行。
print("=" * 50)
总结
大家现在可以使用这款万能代码统计脚本, 它完美解决了大学生在期末作业时期面临统计难题的痛点。该工具具备精准、快速、通用以及零门槛等特征。使用者只需要对第一行中的文件夹路径进行修改, 使得这个路径适配到自己所属的项目当中之后, 就可以执行一键运行的操作了。
在进行考试的作业过程中, 学生必须严格遵守规定, 绝不允许自行捏造虚假的信息, 一定要去使用相应的程序工具来收集那些真实存在的数据状况, 这样的操作行为既可以大幅度提高所完成作业的档次和正式程度, 同时也可以防止因为不诚实而带来的成绩上的无谓损失, 所以希望所有的学习计算机软硬件方向的同学们都能够把这个有用的技巧好好地保存在自己的设备里, 到了学期结束的时候做课程设计的环节可以直接照搬过来使用。
这是一个非常实用的脚本, 它能够被用在期末的大型作业之中, 同时也被大学生视为是一种神奇的工具, 这个工具能够提升编程时的效率。