经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python3 » 查看文章
python3使用GUI统计代码量
来源:jb51  时间:2019/9/19 8:54:52  对本文有异议

本文实例为大家分享了python3使用GUI统计代码量的具体代码,供大家参考,具体内容如下

  1. # coding=utf-8
  2. '''
  3. 选择一个路径
  4. 遍历路径下的每一个文件,统计代码量
  5. 字典存储 每一种类型文件的代码行数,eg: *.py -> 行数
  6. 全局变量 总行数
  7.  
  8. 需要注意的是,这里仅仅能打开utf-8编码的文件,其他类型的文件无法打开,会出现解码错误
  9. 解决方法:使用try-except语句,遇到解码错误就跳过,即 except UnicodeDecodeError:
  10. '''
  11. import easygui as g
  12. import sys
  13. import os
  14.  
  15. # 全局变量 总行数
  16. total_line_num = 0
  17. # 字典存储 每一种类型文件的代码行数,eg: *.py -> 行数
  18. code_file_dict = {}
  19.  
  20.  
  21. def func1(file_path):
  22. if os.path.isdir(file_path):
  23. file_list = os.listdir(file_path) # 列出当前路径下的全部内容
  24. for each in file_list:
  25. path_plus = file_path + os.sep + each
  26. if os.path.isdir(path_plus):
  27. if os.path.basename(path_plus) in [
  28. 'venv', '.idea']: # 如果目录为venv或者.idea,则跳过,不统计
  29. pass
  30. else:
  31. func1(path_plus)
  32. elif os.path.isfile(path_plus):
  33. try:
  34. with open(path_plus, 'r') as f:
  35. # 每个文件的代码行数
  36. line_num = 0
  37. for eachline in f:
  38. global total_line_num # 声明全局变量
  39. total_line_num += 1
  40. line_num += 1
  41. '''
  42. 将each分割出后缀名,存储在字典中
  43. '''
  44. (temp_path, temp_name) = os.path.basename(each).split('.')
  45. temp = '.' + temp_name
  46. global code_file_dict
  47. if temp not in code_file_dict:
  48. code_file_dict[temp] = line_num
  49. else:
  50. code_file_dict[temp] += line_num
  51. except UnicodeDecodeError:
  52. pass
  53. else:
  54. g.msgbox('该路径只是一个文件', '提示')
  55. sys.exit(0)
  56.  
  57.  
  58. if __name__ == '__main__':
  59. try:
  60. dir = g.diropenbox('请选择的你的代码库', '浏览文件夹', default='.')
  61. func1(dir)
  62. print(code_file_dict)
  63. g.textbox(
  64. '总行数为:{}\n已经完成了{}%\n离十万行代码还差{}行'.format(
  65. total_line_num,
  66. (total_line_num / 100000) * 100,
  67. 100000 - total_line_num),
  68. title='统计结果',
  69. text=[
  70. '{a}类型的代码有{b}行\n'.format(a=k,b=v) for k,v in code_file_dict.items()],
  71. codebox=1)
  72. except TypeError as reason:
  73. g.msgbox('取消了统计代码行操作')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号