Python统计python文件中代码,注释及空白对应的行数示例【测试可用】


Posted in Python onJuly 25, 2018

本文实例讲述了Python实现统计python文件中代码,注释及空白对应的行数。分享给大家供大家参考,具体如下:

其实代码和空白行很好统计,难点是注释行

python中的注释分为以#开头的单行注释

或者以'''开头以'''结尾 或以"""开头以"""结尾的文档注释,如:

'''

hello world

'''

'''

hello world'''

思路是用is_comment记录是否存在多行注释,如果不存在,则判断当前行是否以'''开头,是则将is_comment设为True,否则进行空行、当前行注释以及代码行的判断,如果is_comment已经为True即,多行注释已经开始,则判断当前行是否以'''结尾,是则将is_comment设为False,同时增加注释的行数。表示多行注释已经结束,反之继续,此时多行注释还未结束

# -*- coding:utf-8 -*-
#!python3
path = 'test.py'
with open(path,'r',encoding='utf-8') as f:
  code_lines = 0    #代码行数
  comment_lines = 0  #注释行数
  blank_lines = 0   #空白行数 内容为'\n',strip()后为''
  is_comment = False
  start_comment_index = 0 #记录以'''或"""开头的注释位置
  for index,line in enumerate(f,start=1):
    line = line.strip() #去除开头和结尾的空白符

 #判断多行注释是否已经开始 
    if not is_comment:
      if line.startswith("'''") or line.startswith('"""'):
        is_comment = True
        start_comment_index = index
      #单行注释
      elif line.startswith('#'):
        comment_lines += 1
      #空白行
      elif line == '':
        blank_lines += 1
      #代码行
      else:
        code_lines += 1
    #多行注释已经开始
    else:
      if line.endswith("'''") or line.endswith('"""'):
        is_comment = False
        comment_lines += index - start_comment_index + 1
      else:
        pass
print("注释:%d" % comment_lines)
print("空行:%d" % blank_lines)
print("代码:%d" % code_lines)

运行结果:

注释:4
空行:2
代码:26

注:这里的Python测试文件test.py如下:

# -*- coding:utf-8 -*-
#!python3
#九九乘法表
for i in range(1, 10):
    for j in range(1, i+1):
      print("%d*%d=%d\t" % (j, i, i*j), end="")
    print()

#斐波那契数列 0,1,1,2,3,5,8,...

num=int(input("需要几项?"))
n1=0
n2=1
count=2
if num<=0:
  print("请输入一个整数。")
elif num==1:
  print("斐波那契数列:")
  print(n1)
elif num==2:
  print("斐波那契数列:")
  print(n1,",",n2)
else:
  print("斐波那契数列:")
  print(n1,",",n2,end=" , ")
  while count<num:
    sum=n1+n2
    print(sum,end=" , ")
    n1=n2
    n2=sum
    count+=1
print()

感兴趣的朋友可以自己测试一下~

Python 相关文章推荐
Python使用Socket(Https)Post登录百度的实现代码
May 18 Python
Windows8下安装Python的BeautifulSoup
Jan 22 Python
Python处理JSON时的值报错及编码报错的两则解决实录
Jun 26 Python
Python实现网络端口转发和重定向的方法
Sep 19 Python
Python 正则表达式实现计算器功能
Apr 29 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
Sep 08 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
Jul 12 Python
Python爬虫将爬取的图片写入world文档的方法
Nov 07 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
Dec 10 Python
对python3 中方法各种参数和返回值详解
Dec 15 Python
将pytorch转成longtensor的简单方法
Feb 18 Python
pycharm 2020.2.4 pip install Flask 报错 Error:Non-zero exit code的问题
Dec 04 Python
Pandas读取MySQL数据到DataFrame的方法
Jul 25 #Python
python中的常量和变量代码详解
Jul 25 #Python
pandas的唯一值、值计数以及成员资格的示例
Jul 25 #Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 #Python
基于DataFrame改变列类型的方法
Jul 25 #Python
对pandas中Series的map函数详解
Jul 25 #Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 #Python
You might like
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
请离开include_once和require_once
2013/07/18 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
php对二维数组进行排序的简单实例
2013/12/19 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
生成二维码方法汇总
2014/12/26 Javascript
jquery带动画效果幻灯片特效代码
2015/08/27 Javascript
使用javascript插入样式
2016/03/14 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
JS基于开关思想实现的数组去重功能【案例】
2019/02/18 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
three.js欧拉角和四元数的使用方法
2020/07/26 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
初学Python实用技巧两则
2014/08/29 Python
Python科学画图代码分享
2017/11/29 Python
python自定义线程池控制线程数量的示例
2019/02/22 Python
python实现简单银行管理系统
2019/10/25 Python
python 初始化一个定长的数组实例
2019/12/02 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
行政人事专员岗位职责
2014/03/05 职场文书
程序员求职信
2014/04/16 职场文书
创先争优一句话承诺
2014/05/29 职场文书
任命书怎么写
2014/06/04 职场文书
个人求职自荐信范文
2014/06/20 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
军训阅兵新闻稿
2015/07/17 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang