天天看点

统计python代码行数小工具

统计python代码行数小工具

1 定义统计代码行的函数(实现算法)

  1. 声明变量分别存储文件个数、代码总行数、空行数、注释行数
  2. 使用os.walk遍历整个目录
  3. 使用for file_name in files,拿到每个文件的文件名
  4. 使用os.path.join将目录名和文件名,拼成一个绝对路径
  5. 用切片file_path[-3:] == “.py” 判断是否为python代码文件
  6. 如果是的话,则文件个数(file_count)+1
  7. with方式,使用绝对路径,打开这个文件
  8. 使用for遍历文件的每一行,然后代码总行数(line_count)+=1
  9. 如果每行使用strip()方法后为空,则表示为空行,空行数(empty_line_count)+1
  10. 使用切片,如果每行第一个字符line[0]为“#”,则表示该行为注释行,注释行数(comment_line_count)+1
import os
def get_count_codelines(dir_path):  #定义统计代码行的函数
    file_count = 0
    all_line_count = 0
    empty_line_count = 0
    comment_line_count = 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_count += 1     #统计文件个数
                with open(file_path, 'r', encoding="utf-8") as fp:
                    for line in fp:
                        all_line_count += 1      #统计所有的行数
                        if line.strip() == "":
                            empty_line_count += 1       #统计空行数
                        if line[0] == "#":
                            comment_line_count += 1     #统计注释行数
    return (file_count,all_line_count,empty_line_count,comment_line_count)
           

2 使用Tkinter,做一个简单的图形界面

  1. 通过from tkinter import * 引用tkinter 包的所有方法
  2. 定义一个文本输入框,用于输入指定的目录路径
  3. 定义Button的事件处理函数,获取指定目录,并调用代码统计函数,返回代码统计信息
  4. 定义提交按钮,并指定Button的事件处理函数
from tkinter import *
windows = Tk()
windows.title("统计代码行数小工具")  #设置标题
windows.geometry("550x250")
L1 = Label(windows, text="输入目录路径,点【提交】后进行代码行统计")    #创建一个标签,显示提示信息
E1 = Entry(windows, bd =5,width=200)    #定义文本框
L1.pack()
E1.pack()

def clicked():  #定义Button的事件处理函数
    dir_path=E1.get() #获取文本框中的目录路径
    msg_codelines = get_count_codelines(dir_path)   #调用统计代码行的函数
    file_count = msg_codelines[0]
    all_line_count = msg_codelines[1]
    empty_line_count = msg_codelines[2]
    comment_line_count = msg_codelines[3]
    L2.configure(text="代码文件总数:%s 个\n总代码行:%s 行\n空行:%s 行\n注释行:%s 行"
                      %(file_count,all_line_count,empty_line_count,comment_line_count))

button = Button(windows,text="提交",command=clicked)  #定义“提交”按钮,并指定Button的事件处理函数
button.pack()
L2 = Label(windows,text = "",bg='white',width=200,height=10)    #创建一个标签,用于展示统计的代码行信息
L2.pack()
windows.mainloop()
           

3 实现效果

  1. 未进行统计前效果
    统计python代码行数小工具
  2. 输入目录路径,提交统计后效果
    统计python代码行数小工具