博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
统计python文件中的代码,注释,空白对应的行数
阅读量:5093 次
发布时间:2019-06-13

本文共 1408 字,大约阅读时间需要 4 分钟。

其实代码和空白行很好统计,难点是注释行

python中的注释分为以#开头的单行注释

或者以'''开头以'''结尾 或以"""开头以"""结尾的文档注释,如:

'''

hello world

'''和

'''

hello world'''

思路是用is_comment记录是否存在多行注释,如果不存在,则判断当前行是否以'''开头,是则将is_comment设为True,否则进行空行、当前行注释以及代码行的判断,如果is_comment已经为True即,多行注释已经开始,则判断当前行是否以'''结尾,是则将is_comment设为False,同时增加注释的行数。表示多行注释已经结束,反之继续,此时多行注释还未结束

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:                passprint("注释:%d" % comment_lines)print("空行:%d" % blank_lines)print("代码:%d" % code_lines)

 

转载于:https://www.cnblogs.com/hupeng1234/p/6680230.html

你可能感兴趣的文章
iOS archive(归档)的总结 (序列化和反序列化,持久化到文件)
查看>>
python第九天课程:遇到了金角大王
查看>>
字符串处理
查看>>
ECharts(Enterprise Charts 商业产品图表库)初识
查看>>
LeetCode Factorial Trailing Zeroes (阶乘后缀零)
查看>>
hdu 5402 Travelling Salesman Problem (技巧,未写完)
查看>>
[AIR] 获取U盘,打开U盘
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
django url 路由设置技巧
查看>>
三言两语说清“线性流程”
查看>>
(转)虚函数和纯虚函数区别
查看>>
ad logon hour
查看>>
获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
查看>>
证件照(1寸2寸)拍摄处理知识汇总
查看>>
Git入门简介
查看>>
eclipse里maven install时,报错提示jdk为无效的目标版本:1.7
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
asp.net 获取IP地理位置的几个主要接口
查看>>
Python入门-函数
查看>>