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改变日志(logging)存放位置的示例
Mar 27 Python
Python两个整数相除得到浮点数值的方法
Mar 18 Python
Python实现破解12306图片验证码的方法分析
Dec 29 Python
Python如何生成树形图案
Jan 03 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
详解Python基础random模块随机数的生成
Mar 23 Python
Python logging设置和logger解析
Aug 28 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
Python 字符串池化的前提
Jul 03 Python
python如何对链表操作
Oct 10 Python
Django中日期时间型字段进行年月日时分秒分组统计
Nov 27 Python
opencv检测动态物体的实现
Jul 21 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
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
rephactor 优秀的PHP的重构工具
2011/06/09 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
js实现动画特效的文字链接鼠标悬停提示的方法
2015/03/02 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
很棒的js Tab选项卡切换效果
2016/08/30 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
2017/08/04 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
websocket4.0+typescript 实现热更新的方法
2019/08/14 Javascript
Python元组及文件核心对象类型详解
2018/02/11 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
python3使用flask编写注册post接口的方法
2018/12/28 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
苹果美国官方商城:Apple美国
2016/08/24 全球购物
纽约手袋品牌:KARA
2018/03/18 全球购物
护理学毕业生自荐信
2013/10/02 职场文书
职业生涯规划怎么写
2013/12/29 职场文书
销售业务员岗位职责
2014/01/29 职场文书
白酒市场营销方案
2014/02/25 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
创业计划书之旅游网站
2019/09/06 职场文书
python process模块的使用简介
2021/05/14 Python
html5调用摄像头截图功能
2022/01/18 Javascript