# coding='utf-8'
"""
task:代码行数统计器
- 统计某个文件中的代码行数,忽略注释(大概分析)
# 单行注释:包含'#'符号
# 多行注释:考虑三引号
记录相邻三引号的索引,行数 = 后三引号索引 - 前三引号索引 + 1
version:1.0
author:ZXQ
date:2020-05-08
"""
import os
def get_number_of_code_lines(src_file_name):
single = 0
multilines = 0
blank = 0
num = []
# 打开文件
with open(src_file_name, 'r', encoding='utf-8') as f:
# 读取文件中所有内容,以列表形式返回
lines = f.readlines()
# 文件总行数
count = len(lines)
print('文件总行数:%s' % count)
# 逐行读取文件内容
for line_number in range(count):
line_content = lines[line_number]
# print('[%s]:%s' % (line_number + 1, line_content))
# print(type(line))
# 定义判断函数
# 判断是否是单行注释
if '#' in line_content:
single += 1
# 判断是否是多行注释
if line_content.startswith('"""'):
line_number = line_number + 1
num.append(line_number)
# print('三引号位置列表:%s' % num)
three_number = len(num)
# print('三引号个数:%s' % three_number)
# 判断是否是空白行
if line_content == '\n':
blank += 1
for m in range(three_number):
if m % 2 == 0:
multiline = num[m + 1] - num[m] + 1
# print('部分多行注释行数:%s' % multiline)
multilines += multiline
print('单行注释行数:%s\n多行注释行数:%s\n空白行行数:%s' % (single, multilines, blank))
number_of_code_lines = count - single - multilines - blank
return number_of_code_lines
if __name__ == '__main__':
src_file_name = 'test002-副本.py'
if os.path.exists(src_file_name):
if src_file_name.endswith('.py'):
number = get_number_of_code_lines(src_file_name)
print('有效代码行数:%s' % number)
else:
print('该文件不是python文件!')
else:
print('该文件不存在,请核实!')
代码行数统计
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...