#!/usr/bin/python3# ******************************************************************************# Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved.# licensed under the Mulan PSL v2.# You can use this software according to the terms and conditions of the Mulan PSL v2.# You may obtain a copy of Mulan PSL v2 at:# http://license.coscl.org.cn/MulanPSL2# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR# PURPOSE.# See the Mulan PSL v2 for more details.# ******************************************************************************/# 统计代码量,显示离10W行代码还有多远# 递归搜索各个文件夹# 显示各个类型的源文件和源代码数量# 显示总行数与百分比import osimport easygui as g# 查找文件def find_file(file_path, target):os.chdir(file_path)all_files = os.listdir(os.curdir)for each in all_files:# print(each)fext = os.path.splitext(each)[1]if fext in target:lines = calc_code(each) # 统计行数# print("文件%s的代码行数是%d"%(each,lines))# 统计文件数try:file_list[fext] += 1except KeyError:file_list[fext] = 1# 统计源代码行数try:source_list[fext] += lines# print(source_list[fext])except KeyError:source_list[fext] = lines# print(source_list[fext])if os.path.isdir(each):find_file(each, target) # 递归调用os.chdir(os.pardir) # 返回上层目录# 统计行数def calc_code(file_name):lines = 0with open(file_name, encoding='gb18030', errors='ignore') as f:print("正在分析文件%s..." % file_name)try:for eachline in f:lines += 1except UnicodeDecodeError:passprint("文件%s分析完毕,包含代码行%d." % (file_name, lines))return lines# 显示结果def show_result(start_dir):lines = 0total = 0text = ''for i in source_list:lines = source_list[i]total += linestext += '%s源文件%d个,源代码%d行\n' % (i, file_list[i], lines)title = '统计结果'msg = '目前代码行数:%d\n完成进度:%.2f%%\n距离十万行代码还差%d行' % (total, total / 1000, 100000 - total)g.msgbox(msg, title, text)# file_path=input("要查找的路径; ") # C:\\Users\54353円\\PycharmProjects\\untitledtarget = ['.py', '.java_learn', '.c', '.cc', '.cpp', '.sh', '.config'] # 定义需要查找的源文件类型file_list = {}source_list = {}g.msgbox('请打开您的文件夹', '统计代码量')path = g.diropenbox('请选择您的代码库:')find_file(path, target)show_result(path)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。