python3 实现统计代码行数,简单高效

python3 实现统计代码行数,简单高效

需求背景

需求:统计指定目录下python文件的个数,代码行数,空行数,注释行数。包括子文件夹下的内容。

工具

  • python 3.8.5
  • PyCharm

python源码

import os
def count_codelines(dir_path):  #定义统计代码行的函数
    file_num = 0                  #声明变量分别存储文件个数、
    all_line_num = 0              #代码总行数、
    empty_line_num = 0            #空行数、
    comment_line_num = 0          #注释行数
    for root, dirs, files in os.walk(dir_path):             #遍历整个目录
        for file_name in files:                             #获取每个文件的文件名
            file_path = os.path.join(root, file_name)       #拼接目录名和文件名为一个绝对路径
            if file_path[-3:] == ".py":                     #判断是否为python代码文件
                file_num += 1                             #统计文件个数
                with open(file_path, 'r', encoding="utf-8") as fp:  #with语句读文件会自动调用close()方法,防止文件对象占用系统资源
                    for line in fp:
                        all_line_num += 1                 #统计所有的行数
                        if line.strip() == "":
                            empty_line_num += 1           #统计空行数
                        if line[0] == "#":
                            comment_line_num += 1         #统计注释行数
    return (file_num,all_line_num,empty_line_num,comment_line_num)

if __name__ == "__main__":
    codelines = count_codelines("C:/Users/admin/PycharmProjects/pythonProject")
    print("文件个数:",codelines[0],
          "代码总行数:",codelines[1],
          "空行数:",codelines[2],
          "注释行数:",codelines[3])

知识点总结

  1. os.walk() 方法是个文件、目录遍历器
  2. os.walk() 方法会返回三个参数:top, dirs, nondirs(传入的根目录,根目录下的文件夹,根目录下的文件)
  3. os.path.join(root, file_name) 方法将目录名和文件名,拼成一个绝对路径
  4. file_path[-3:] == ".py" 用切片判断文件是否为python代码文件
  5. with open(file_path, 'r', encoding="utf-8") as fp: with语句读文件会自动调用close()方法,防止文件对象过度占用系统资源
  6. Python strip() 方法用于移除字符串头尾指定的字符(默认为空格)

每天积累一小点。python3 实现统计代码行数,简单高效_第1张图片–该图片来源网络,如有侵权,请告知删除。

你可能感兴趣的:(python,python,运维,测试工程师)