統計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 實作效果
- 未進行統計前效果
- 輸入目錄路徑,送出統計後效果