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之使用Python操作数据库(1)
Nov 25 Python
Python 正则表达式(转义问题)
Dec 15 Python
Python多层嵌套list的递归处理方法(推荐)
Jun 08 Python
Python切换pip安装源的方法详解
Nov 18 Python
python 链接和操作 memcache方法
Mar 04 Python
详解python基础之while循环及if判断
Aug 24 Python
Python for循环生成列表的实例
Jun 15 Python
TensorFlow 合并/连接数组的方法
Jul 27 Python
详解Python Opencv和PIL读取图像文件的差别
Dec 27 Python
使用Python获取当前工作目录和执行命令的位置
Mar 09 Python
python+requests实现接口测试的完整步骤
Oct 27 Python
Django数据统计功能count()的使用
Nov 30 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递归json类实例
2014/12/02 PHP
从wamp到xampp的升级之路
2015/04/08 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
2015/08/18 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
JavaScript数组常用操作技巧汇总
2014/11/17 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
基于js中this和event 的区别(详解)
2017/10/24 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
Vue中keep-alive组件作用详解
2020/02/04 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
Python中的__new__与__init__魔术方法理解笔记
2014/11/08 Python
Python实现简单的四则运算计算器
2016/11/02 Python
Ubuntu下创建虚拟独立的Python环境全过程
2017/02/10 Python
python机器学习实战之树回归详解
2017/12/20 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
一套VC试题
2015/01/23 面试题
跟单文员的岗位职责
2013/11/14 职场文书
大学班长的职责
2014/01/27 职场文书
畜牧兽医本科生的自我评价
2014/03/03 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
民间借贷被告代理词
2015/05/23 职场文书
《我是什么》教学反思
2016/02/16 职场文书
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript