|
发表于 2020-3-10 23:04:29
|
显示全部楼层
- import os
- import easygui as g
- def show_result(start_dir):
- lines = 0
- total =0
- text =''
- for i in source_list:
- lines =source_list[i]
- total +=lines
- text +='[%s]源文件%d个,源代码%d行\n'%(i,file_list[i],lines)
- title ='统计结果'
- msg ='您目前共累积编写了%d行代码,完成进度:%.2f %%\n离10万行代码还差%d行,请继续努力!'%(total,total/1000,100000-total)
- g.textbox(msg,title,text)
- def calc_code(file_name):
- lines =0
- with open(file_name, encoding="utf-8") as f:
- print('正在分析文件:%s...'%file_name)
- try:
- for each_line in f:
- lines +=1
- except UnicodeDecodeError:
- pass
- return lines
- def search_file(start_dir):
- os.chdir(start_dir)
- for each_file in os.listdir(os.curdir):
- ext =os.path.splitext(each_file)[1]
- if ext in target:
- lines =calc_code(each_file)
- try:
- file_list[ext] +=1
- except KeyError:
- file_list[ext] =1
- try:
- source_list[ext] +=lines
- except KeyError:
- source_list[ext] =lines
- if os.path.isdir(each_file):
- search_file(each_file)
- os.chdir(os.pardir)
- target =['.c','.py','.cpp','.cc','.java']
- file_list ={}
- source_list ={}
- g.msgbox('请打开您存放所有代码的文件夹','统计代码量')
- path =g.diropenbox('请选择您的代码库:')
- search_file(path)
- show_result(path)
复制代码 |
|