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批量下载图片的三种方法
Apr 22 Python
Python正则表达式的使用范例详解
Aug 08 Python
Python将xml和xsl转换为html的方法
Mar 10 Python
Python httplib模块使用实例
Apr 11 Python
详解Python中time()方法的使用的教程
May 22 Python
详解Python之数据序列化(json、pickle、shelve)
Mar 30 Python
Python正则表达式知识汇总
Sep 22 Python
python随机生成库faker库api实例详解
Nov 28 Python
Python hmac模块使用实例解析
Dec 24 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 Python
详解anaconda离线安装pytorchGPU版
Sep 08 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
Dec 01 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
层叠菜单的动态生成
2006/10/09 PHP
PHP Squid中可缓存的动态网页设计
2008/09/17 PHP
composer.lock文件的作用
2016/02/03 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
Aster vs KG BO3 第三场2.19
2021/03/10 DOTA
JavaScript 继承详解(一)
2009/07/13 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
JavaScript的代码编写格式规范指南
2015/12/07 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
2016/04/06 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
2017/11/08 Javascript
layui的table中显示图片方法
2018/08/17 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
利用python微信库itchat实现微信自动回复功能
2017/05/18 Python
Python实现的直接插入排序算法示例
2018/04/29 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
python-opencv 将连续图片写成视频格式的方法
2019/01/08 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
会计专业毕业生自我评价
2013/09/25 职场文书
金融专业个人的自我评价
2013/10/18 职场文书
职业生涯规划设计步骤
2014/01/12 职场文书
驾驶员培训方案
2014/05/01 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
爱国口号
2014/06/19 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
SQL Server表分区删除详情
2021/10/16 SQL Server