快来算一算你写了多少行代码

前面我们一直在介绍图形界面,这次换个口味,在命令行实现代码行数统计程序。本程序共 135 行,其中 18 行空行、110 行有效代码、7行注释,大小为 7.71 KB。

主要思路

通过 argparse 设置四个参数 -f, -p, -s, -r,其中 -f 表示单个 py 文件,-p 表示文件夹地址。-s 接排序的关键字,也就是根据哪个属性显示信息。默认情况下,信息按 total 关键字降序排序,我们可以通过加上 -r 参数来得到升序序列。

对于单个 Py 文件,我们首先以只读方式读取文件,按行读取。每读取一行,total + 1。如果该行长度为 0,blank + 1。如果以‘#’开头,note + 1。否则的话,code + 1。其中,如果遇到单引号、双引号或者三引号,程序要单独计算这些注释的行数,主循环直接跳过相应次数的迭代。最后,通过 format 字符串打印字符。其中,代码要以英文命名,否则会显示混乱。

解析参数

我们使用标准库中的 argparse 来设置命令行参数。首先新建一个 parser 对象,并设置相应的提示信息。通过 group 对象添加的参数互斥,也就是说 -p -f 参数不能同时使用。parse_args() 用来获取对象参数。

import argparse​def parse_args(): parser = argparse.ArgumentParser(usage='命令行统计代码函数', description='统计文件夹或者单个文件信息') group = parser.add_mutually_exclusive_group() group.add_argument('-p', '--path', help='输入你的文件地址', default='') group.add_argument('-f', '--file', help='输入你的文件名', default='') parser.add_argument('-s', '--sort', help='排序', default='total') parser.add_argument('-r', '--reverse', help='逆序:不需要参数', action='store_false', default=True) args = parser.parse_args() return args

基本判断

简单的判断,有三个分支。长度为 0,blank + 1;以‘#’开头,note + 1。如果既不是空行,也不是注释,那么代码的行数 + 1。

if not len(line): blank += 1elif line.startswith('#'): note += 1else: code += 1

注释判断

对于以引号开头的行,我们就要小心了。

elif line.startswith('"' or '"""' or "'" or "'''"): if line.startswith('"""') or line.startswith("'''"): temp_note = process_note(lines[num:], line[:3]) else: temp_note = process_note(lines[num:], line[0]) note += temp_note

我们需要 process_note 函数计算这些引号所占的行数。从引号开始的那一行计数,一直都引号结束的地方停止计数,最后返回注释的行数。

# 总行数 空行数 代码行 注释行 文件大小def process_note(lines, symbol): note = 0 for line in lines: note += 1 line = line.strip() if line.endswith(symbol): break return note

与之配合的代码如下。对于引号所占的行,我们可以直接跳过,继续执行 for 循环。

if temp_note > 1: temp_note -= 1 continue

要点就梳理到这里了,具体代码在后台回复2019420获取。

写文不易,还请大家多多转发支持。

phpstorm统计程序行数_Python 实现代码行数统计相关推荐

  1. Linux统计目录下文件个数及代码行数

    1. 统计当前目录下,php文件数量 find ./ -name "*.php" | wc -l 2. 统计当前目录下所有php文件代码行数 find ./ -name " ...

  2. python代码行数统计工具_Python实现代码行数统计工具的功能(实例)

    本篇文章给大家带来的内容是关于Python实现代码行数统计工具的功能(实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 我们经常想要统计项目的代码行数,但是如果想统计功能比较完善 ...

  3. 多少行数_经验丰富的程序员和其每日代码行数

    John D. Cook是一位数学教授.程序员.顾问.经理人和统计学家,善于并享受结合运用这些技能来解决问题.他曾撰文说(中文): "最近,我听说了一个关于缺乏经验的程序员和经验丰富的程序员 ...

  4. 代码行统计工具:根据命令行输入的指定目录及文件类型进行统计目录或单个文件的代码行数

    #统计指定目录(count_path).指定文件类型文件(file_types)的代码量 import os def count_all_file_code(count_path,file_types ...

  5. 千行代码率和代码行数总量

    首先引用一句话:"用代码行数来衡量编程的进度,就如同用重量来衡量飞机的制造进度"这是比尔盖茨总结的一句非常经典的话". 我们统计这个不是目的,只是用来寻找开发过程中的一些 ...

  6. python中统计数据的总和_Python 数据的累加与统计的示例代码

    问题 你需要处理一个很大的数据集并需要计算数据总和或其他统计量. 解决方案 对于任何涉及到统计.时间序列以及其他相关技术的数据分析问题,都可以考虑使用 Pandas库 . 为了让你先体验下,下面是一个 ...

  7. python怎么定义文档的行数_python删除文本中行数标签的方法

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  8. python获取pdf页数_Python分割指定页数的pdf文件方法

    Python分割指定页数的pdf文件方法 如下所示: from PyPDF2 import PdfFileWriter, PdfFileReader # 开始页 start_page = 0 # 截止 ...

  9. python命令行参数传递_Python中 命令行参数传递 与 处理

    英文原文: http://www.artima.com/weblogs/viewpost.jsp?thread=4829 很多人会在 if __name__ == "__main__&quo ...

最新文章

  1. GeoServer 数据导出
  2. svn教程----权限分配之示例一:开发人员拥有读写权限
  3. 在线音乐网站Pandora申请IPO融1亿美元
  4. android wear ios 连接,教你如何让Android Wear智能手表兼容iOS系统
  5. 条款七 为多态基类声明virtual析构函数
  6. 智慧城市不是“交钥匙”工程 信息技术是根本
  7. C#控制台程序中处理2个关闭事件的代码实例
  8. 汉字转拼音,一二级词库,不支持多音字
  9. java调用MySQL脚本_Java调用SQL脚本执行常用的方法示例
  10. TensorFlow tf.keras.callbacks.EarlyStopping
  11. Ansible首次ssh问题解决
  12. 树莓派入门教程 - 0 - 准备篇 - 0.0 SD卡制作树莓派系统镜像启动盘 开机
  13. JQuery选择器中含有冒号的ID处理差异的分析
  14. 安装多个电脑杀毒软件
  15. Android沉浸式的两种方法
  16. 爬取分析拉勾网招聘信息
  17. 基于FPGA的数字交通红绿灯Verilog开发Modelsim仿真
  18. 连连看修改(golang)
  19. 在线图片压缩网站TinyPNG
  20. GSoC、CSDN 开源夏令营--我的开源社区之旅

热门文章

  1. thymeleaf中的th:assert用法
  2. 苏州大学计算机组成题库11,苏州大学计算机组成题库(范文).doc
  3. 计算机应用技术的历史与现状,浅析计算机应用技术的现状及发展趋势
  4. php post获取dvi,如何利用http来发送post请求
  5. php 判断 跳转url参数,怎么通过链接获取跳转后的url参数
  6. 应用层协议:HTTP
  7. NodeJs同步、异步加载
  8. POJ1734无向图求最小环
  9. error_reporting()函数
  10. SPFieldLookupValue