统计python代码行数小工具
1 定义统计代码行的函数(实现算法)
- 声明变量分别存储文件个数、代码总行数、空行数、注释行数
- 使用os.walk遍历整个目录
- 使用for file_name in files,拿到每个文件的文件名
- 使用os.path.join将目录名和文件名,拼成一个绝对路径
- 用切片file_path[-3:] == “.py” 判断是否为python代码文件
- 如果是的话,则文件个数(file_count)+1
- with方式,使用绝对路径,打开这个文件
- 使用for遍历文件的每一行,然后代码总行数(line_count)+=1
- 如果每行使用strip()方法后为空,则表示为空行,空行数(empty_line_count)+1
- 使用切片,如果每行第一个字符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,做一个简单的图形界面
- 通过from tkinter import * 引用tkinter 包的所有方法
- 定义一个文本输入框,用于输入指定的目录路径
- 定义Button的事件处理函数,获取指定目录,并调用代码统计函数,返回代码统计信息
- 定义提交按钮,并指定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 实现效果
- 未进行统计前效果
- 输入目录路径,提交统计后效果