import easygui as g
import os
codingdict = {}
typedict={}
linecountdict={}
def choicecounttype():
'''選擇要統計哪些**檔案型別'''
global codingdict
global typedict
global linecountdict
choices = [".py", ".c", ".cpp", ".txt",".cs",".aspx"] # 設定**檔案選項
usertype = g.multchoicebox(msg="請從下列列表中選擇要統計的**檔案型別!", title="**統計", choices=choices)
#codingdict = dict.fromkeys(usertype, [0, 0]) # 給型別字典賦初值
typedict=dict.fromkeys(usertype,0)
linecountdict=dict.fromkeys(usertype,0)
dirpath = g.diropenbox()
return dirpath
def calc_code(paths,file_name):
'''統計有效**行的函式'''
codinglines = 0
with open(paths + "\" + file_name,errors="ignore") as fp:
print('正在分析檔案:%s ...' % file_name)
dateline = fp.readlines()
for line in dateline:
if line == "\n":
continue
elif line.startswith("#"):
continue
else:
codinglines+=1
return codinglines
def choicedir(dirpath):
'''用os.walk()遍歷計算檔案數量和有效**數分別存進對應列表中'''
global typedict
global linecountdict
for paths, dirs, files in os.walk(dirpath):
if len(files) > 0: # 如果有檔案,就執行下一步的遍歷檔案列表
for file in files:
ext = os.path.splitext(file)[1] # 切片出型別,然後判斷出型別在不在程式設計型別檔案裡
if ext in typedict.keys(): # 如果切出來的型別在字典的key中
lines=calc_code(paths,file) #呼叫函式算出現在迴圈到的這個檔案有多少有效**行數
typedict[ext]+=1 #基於這個key給typedict賦值,統計現在這個檔案型別的檔案數量
linecountdict[ext]+=lines #基於這個key給linecountdict賦值,統計現在這個型別的檔案有多少有效行數
def showresult():
msg=""
text=""
title="統計結果"
totallines=0
for i in linecountdict.keys():
for each in typedict.keys():
if i==each:
text += (f"型別的檔案有個,共計有效**量行\n")
totallines+=linecountdict[i]
#print(totallines)
msg=f"您目前共累積編寫了行**,完成進度:%\n離 10 萬行**還差行,請繼續努力!"
g.textbox(msg, title, text)
openpath = choicecounttype()
choicedir(openpath)
showresult()
python列表,字典
1字串處理 s.startswith adfaas s這個字串是不是以adfaas開始 s.endswith adfaas s這個字串是不是以adfaas結束 s.find substring,start end 可指範圍查詢子串,返回索引值,否則返回 1 s.rfind substring,sta...
Python 列表 字典
陣列 只能儲存同一種資料型別的結構 元組tuple 定義列表 定義元組 元組被稱為被帶了緊箍咒的列表,那麼就證明元組與列表的功能類似,只是不如列表強大。元組是不可變的資料型別 不能修改元組中的元素 列表是可變資料型別,可以修改元素。那就有了增刪改查 拿出列表最後乙個元素,最後乙個元素是列表,再拿出列...
Python中的列表 字典 元組
1.索引,切片,加,乘,檢查成員 2.增加 刪除 連線分割 排序倒序 list1 1,2,3.0,4,5.0 list2 6 7 8 8 8 list3 one two three list4 1,2,3 print len list1 print list2.count 8 print list1...