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服务器拒绝服务攻击代码
Jan 16 Python
Python中元组,列表,字典的区别
May 21 Python
python进阶_浅谈面向对象进阶
Aug 17 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
Python利用正则表达式实现计算器算法思路解析
Apr 25 Python
Sanic框架流式传输操作示例
Jul 18 Python
深入理解python中sort()与sorted()的区别
Aug 29 Python
pycharm 取消默认的右击运行unittest的方法
Nov 29 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 Python
python创建与遍历List二维列表的方法
Aug 16 Python
Python环境配置实现pip加速过程解析
Nov 27 Python
通过python-pptx模块操作ppt文件的方法
Dec 26 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
星际争霸任务指南——人族
2020/03/04 星际争霸
PHP+DBM的同学录程序(4)
2006/10/09 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
javascript 作用于作用域链的详解
2017/09/27 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
2019/05/21 Javascript
如何基于js判断浏览器版本
2020/02/20 Javascript
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
Python实时获取cmd的输出
2015/12/13 Python
基于Python __dict__与dir()的区别详解
2017/10/30 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
Python编程深度学习绘图库之matplotlib
2018/12/28 Python
python程序变成软件的实操方法
2019/06/24 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
Python scrapy增量爬取实例及实现过程解析
2019/12/24 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
django 实现简单的插入视频
2020/04/07 Python
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
药品质量检测应届生求职信
2013/11/14 职场文书
中餐厅主管的职责范文
2014/02/04 职场文书
学习“七一”讲话精神体会
2014/07/08 职场文书
2014幼儿园班主任工作总结
2014/12/04 职场文书
2014年路政工作总结
2014/12/10 职场文书
售后服务承诺函格式
2015/01/21 职场文书
高中社区服务活动报告
2015/02/05 职场文书
刑事辩护词范文
2015/05/21 职场文书
建筑工程催款函
2015/06/24 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
2021/06/05 Python
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫