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模块学习 re 正则表达式
May 19 Python
使用 Python 获取 Linux 系统信息的代码
Jul 13 Python
python中的sort方法使用详解
Jul 25 Python
python编写Logistic逻辑回归
Dec 30 Python
python xlsxwriter库生成图表的应用示例
Mar 16 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
详解python的四种内置数据结构
Mar 19 Python
浅谈Python基础—判断和循环
Mar 22 Python
Python 用__new__方法实现单例的操作
Dec 11 Python
python实战之一步一步教你绘制小猪佩奇
Apr 22 Python
python cv2图像质量压缩的算法示例
Jun 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
php 生成随机验证码图片代码
2010/02/08 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
2014/04/20 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
微信小程序中显示html格式内容的方法
2017/04/25 Javascript
ES6学习教程之模板字符串详解
2017/10/09 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
Vue编程式跳转的实例代码详解
2019/07/10 Javascript
jquery实现垂直手风琴菜单
2020/03/04 jQuery
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
[05:31]DOTA2英雄梦之声_第08期_莉娜
2014/06/23 DOTA
Python 正则表达式(转义问题)
2014/12/15 Python
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
Python装饰器知识点补充
2018/05/28 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
python程序控制NAO机器人行走
2019/04/29 Python
Django Rest framework权限的详细用法
2019/07/25 Python
python matplotlib库绘制散点图例题解析
2019/08/10 Python
django框架两个使用模板实例
2019/12/11 Python
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
优秀体育委员自荐书
2014/01/31 职场文书
2014年新教师工作总结
2014/11/08 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
2014年学校团委工作总结
2014/12/20 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
css height属性中的calc方法详解
2021/06/03 HTML / CSS