统计已写代码行数,准备做全文件函数名类名变量名替换!
1 import easygui as g 2 import os 3 def 显示结果(开始目录): 4 行数 = 0 5 总数 = 0 6 文本 = "" 7 for i in 来源列表: 8 行数 = 来源列表[i] 9 总数 += 行数 10 文本 += "【%s】源文件 %d 个,源代码 %d 行 " % (i, 文件列表[i], 行数) 11 标题 = '统计结果' 12 统计结果 = '您目前共累积编写了 %d 行代码,完成进度:%.2f %% 离 10 万行代码还差 %d 行,请继续努力!' % (总数, 总数 / 1000, 100000 - 总数) 13 g.textbox(统计结果, 标题, 文本) 14 def 计算(文件名): 15 行数 = 0 16 with open(文件名) as f: 17 print('正在分析文件:%s ...' % 文件名) 18 try: 19 for 每行 in f: 20 行数 += 1 21 except UnicodeDecodeError: 22 pass # 不可避免会遇到格式不兼容的文件,这里忽略掉...... 23 return 行数 24 def 搜索文件(开始目录): 25 os.chdir(开始目录) 26 for 每个文件 in os.listdir(os.curdir): 27 ext = os.path.splitext(每个文件)[1] 28 if ext in 目标: 29 行数 = 计算(每个文件) # 统计行数 30 # 异常?如果字典中不存,抛出 KeyError,则添加字典键 31 # 统计文件数 32 try: 33 文件列表[ext] += 1 34 except KeyError: 35 文件列表[ext] = 1 36 # 统计源代码行数 37 try: 38 来源列表[ext] += 行数 39 except KeyError: 40 来源列表[ext] = 行数 41 if os.path.isdir(每个文件): 42 搜索文件(每个文件) # 递归调用 43 os.chdir(os.pardir) # 递归调用后切记返回上一层目录 44 目标 = ['.py'] 45 文件列表 = {} 46 来源列表 = {} 47 g.msgbox("请打开您存放所有代码的文件夹......", "统计代码量") 48 路径 = g.diropenbox("请选择您的代码库:") 49 搜索文件(路径) 50 显示结果(路径)