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 14 Python
Django框架中数据的连锁查询和限制返回数据的方法
Jul 17 Python
python学习 流程控制语句详解
Jun 01 Python
Windows下安装Django框架的方法简明教程
Mar 28 Python
python编程使用协程并发的优缺点
Sep 20 Python
Python实现高斯函数的三维显示方法
Dec 29 Python
python使用 zip 同时迭代多个序列示例
Jul 06 Python
python批量解压zip文件的方法
Aug 20 Python
python selenium 执行完毕关闭chromedriver进程示例
Nov 15 Python
Python的缺点和劣势分析
Nov 19 Python
Python timeit模块原理及使用方法
Oct 10 Python
python利用 keyboard 库记录键盘事件
Oct 16 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/10/26 PHP
php发送get、post请求的6种方法简明总结
2014/07/08 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
2016/12/12 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
JS简单判断字符在另一个字符串中出现次数的2种常用方法
2017/04/20 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
vuex实现购物车功能
2020/06/28 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
python with语句的原理与用法详解
2020/03/30 Python
快速创建 HTML5 Canvas 电信网络拓扑图的示例代码
2018/03/21 HTML / CSS
两道JAVA笔试题
2016/09/14 面试题
大三毕业自我鉴定
2014/01/15 职场文书
保安公司服务承诺书
2014/05/28 职场文书
青年文明号口号
2014/06/17 职场文书
党的群众路线整改落实情况汇报
2014/10/28 职场文书
2014年度安全工作总结
2014/12/04 职场文书
党校毕业个人总结
2015/02/28 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
在JavaScript中如何使用宏详解
2021/05/06 Javascript
python学习之panda数据分析核心支持库
2021/05/07 Python
python 爬取吉首大学网站成绩单
2021/06/02 Python