Python用正则匹配来统计已写源码行数的示例(Crossin教室实例27)

2024-01-07 19:09:39

一、问题描述:

码农经常会被问到,一共写过多少行代码?现在,给定一个包含py 文件的目录,统计该目录中所有源码文件的总行数,并分别列出注释行、空行与有效代码的行数。请注意,为了简化问题,我们暂不考虑多行注释,有兴趣的同学可以自己尝试思考多行注释下的代码统计。

二、示例代码:

import os
import re

program_dir = r'.'                              # 设定统计源码所在的目录(.表示当前目录)
blank_lines = 0                                 # 初始化统计变量
remark_lines = 0
affect_lines = 0
total_lines = 0
count_files = 0
for root, dirs, files in os.walk(program_dir):
    for every_file in files:
        file_root = os.path.join(root, every_file)
        open_file = open(file_root, 'r')
        try:
            file_content = open_file.readlines()                # 按照行读取文件

        except:
            file_content = []
        open_file.close()
        print('正在统计:'+str(count_files), file_root)
        count_files += 1
        for line in file_content:
            first_char = re.search(r'(?<=\s)*\S', line)     # 匹配每行第一个非空字符
            if not first_char:                                      # 判断并统计
                blank_lines += 1
            elif first_char.group() == '#':
                remark_lines += 1
            else:
                affect_lines += 1
            total_lines += 1
print('有效行:', affect_lines)
print('注释行:', remark_lines)
print('空白行:', blank_lines)
print('总行数:', total_lines)

三、运行结果展示:

文章来源:https://blog.csdn.net/m0_64880493/article/details/135436361
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。