您的位置:首页 > 房产 > 建筑 > 计算自己Java学习之路的代码量小工具

计算自己Java学习之路的代码量小工具

2025/1/27 12:41:21 来源:https://blog.csdn.net/2301_79271343/article/details/142018669  浏览:    关键词:计算自己Java学习之路的代码量小工具

1. 导入模块

import os
import tkinter as tk
from tkinter import filedialog, messagebox
  • os:用于处理文件和目录路径的模块,os.walk() 方法可以遍历目录中的所有文件。
  • tkinter:Python 的标准库之一,用来创建图形用户界面 (GUI)。
  • filedialogmessagebox:来自 tkinter 模块,分别用于文件选择对话框和消息框。

2. 代码行数统计函数

def count_lines_in_file(file_path):"""统计指定文件的代码行数(忽略空行和注释)"""lines_of_code = 0with open(file_path, 'r', encoding='utf-8') as file:for line in file:stripped_line = line.strip()# 跳过空行if not stripped_line:continue# 统计有效代码行lines_of_code += 1return lines_of_code
  • count_lines_in_file:用于打开指定的 Java 文件并统计其中的代码行数,忽略空行。
  • stripped_line = line.strip():去除每行代码前后的空白字符(如空格、制表符等)。
  • 如果该行内容为空,跳过此行。
  • 每行有效代码行数累加,最后返回文件的总有效行数。

3. 遍历文件夹并统计 Java 文件行数

def traverse_and_count_java(folder_path):"""遍历指定文件夹,统计所有 Java 文件的代码行数"""total_lines = 0java_files = 0folder_count = 0if not os.path.exists(folder_path):messagebox.showerror("Error", "路径不存在!")return total_lines, java_files# 遍历文件夹中的所有文件for root, dirs, files in os.walk(folder_path):folder_count += 1for file in files:if file.endswith('.java'):file_path = os.path.join(root, file)lines_in_file = count_lines_in_file(file_path)total_lines += lines_in_filejava_files += 1return total_lines, java_files
  • traverse_and_count_java:递归遍历给定文件夹中的所有文件,统计 .java 文件的数量及其代码行数。
  • os.path.exists(folder_path):检查输入的文件夹路径是否存在。如果不存在,弹出错误提示框。
  • os.walk(folder_path):递归遍历文件夹中的所有子文件夹和文件。
  • 每找到一个 .java 文件,就调用 count_lines_in_file 来计算其代码行数,同时累加总行数和 Java 文件数量。

4. 文件夹选择功能

def browse_folder():"""选择文件夹"""folder_path = filedialog.askdirectory()entry_folder.delete(0, tk.END)entry_folder.insert(0, folder_path)
  • browse_folder:点击“浏览”按钮后调用的函数,用于弹出文件夹选择对话框,用户选择文件夹后,将路径显示在输入框中。
  • filedialog.askdirectory():用于弹出选择文件夹的对话框。

5. 计算代码行数并显示结果

def calculate_code_lines():"""计算代码行数并显示结果"""folder_path = entry_folder.get()if not folder_path:messagebox.showerror("Error", "请输入文件夹路径或选择文件夹!")returntotal_lines, java_files = traverse_and_count_java(folder_path)if java_files > 0:messagebox.showinfo("统计结果", f"Java 文件数: {java_files}\n总代码行数: {total_lines}")else:messagebox.showinfo("统计结果", "未找到 Java 文件!")
  • calculate_code_lines:用户点击“计算代码行数”按钮时执行。先获取用户输入的文件夹路径,如果路径为空,则弹出错误提示框;否则调用 traverse_and_count_java 函数来统计文件夹中的 Java 文件数及总代码行数。
  • 如果找到了 Java 文件,则弹出包含统计结果的消息框;否则提示“未找到 Java 文件”。

6. 主窗口的界面布局

root = tk.Tk()
root.title("Java 代码行数统计器")frame = tk.Frame(root)
frame.pack(pady=10)label_folder = tk.Label(frame, text="文件夹路径:")
label_folder.pack(side=tk.LEFT)entry_folder = tk.Entry(frame, width=50)
entry_folder.pack(side=tk.LEFT)button_browse = tk.Button(frame, text="浏览", command=browse_folder)
button_browse.pack(side=tk.LEFT)button_calculate = tk.Button(root, text="计算代码行数", command=calculate_code_lines)
button_calculate.pack(pady=10)root.mainloop()
  • root = tk.Tk():创建主窗口。
  • frame:用于组织输入框、标签和按钮的框架。
  • entry_folder:输入框,用于显示或输入文件夹路径。
  • button_browsebutton_calculate:按钮,分别用于浏览文件夹和开始计算代码行数。
  • root.mainloop():进入 Tkinter 的事件循环,等待用户的操作。

总结

  • 这段代码的主要功能是通过图形化界面选择文件夹,并统计该文件夹中所有 Java 文件的代码行数。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com