星河主炮 发表于 2020-5-1 13:41:51

适用于py3.8的统计代码行数实现

本帖最后由 星河主炮 于 2020-5-1 19:28 编辑

import easygui as g
import os
import sys

#找文件模块

def serch_file():

    file = 0

    source_code = []

    source_py = []

    #source_c = []   几个为其他语言预留的列表位

    #source_cpp = []

    #source_pas = []

    #source_asm = []

    path = g.diropenbox(msg = '打开放置代码的文件夹',title = '代码行数统计')

    file_name = os.listdir(path)

    for i in file_name:

      if i.endswith('.py') == True:#笔者只学python,偷个懒,若要显示其他语言就多写几个,或者用嵌套函数

            source_code.append(i)   #构造文件名列表

            source_py.append(i)   #单纯对于.py文件来说此步纯属多余,对于显示多种有必要使用

            file = file + 1

    return (file,source_code,source_py)#此处避免区分全局变量与局部变量         return只能返回一个值,但是可以返回一个列表或元组装作只返回了一个值

#读文件模块

def calc_code(x):#calc是calculate的缩写

    lines = 0

    for i in x:#条件用while,遍历用for

      f = open(i,encoding = 'UTF-8')#此句最好加上,不过没有也不一定就不行

      for each_line in f: #统计行数

            lines += 1

    return lines

#显示文件模块

def show_result(a,b,e):

    c = (b/100000)*100

    d = 100000 - b

    e1 = len(e)

    g.textbox(msg = ('共编写了%d个文件,源代码共%d行,距离100,000行的目标已完成%.2f %%\n目前尚有%d行代码要编写。'%(a,b,c,d)),title = '代码行数统计',text = ('共有.py文件%d个。'%(e1)))

    g.msgbox(msg='感谢使用',ok_button = '做的好!')

    return

#主程序
         
list1 = serch_file()

a = list1

x = list1

e = list1

b = calc_code(x)

show_result(a,b,e)

sys.exit(0)


#在找文件模块中应该使用绝对路径,否则该python程序必须与检测文件夹放在同一目录下,不然会报错。不过这里再偷个懒,因为这个文件也算代码,不放在别的地方,bug不会出现



代码里问题不少,也不算特别优雅,不过保证能跑(需要easygui模块支持),也保证结果正确

星河主炮 发表于 2020-5-1 13:43:04

没发成代码格式抱歉了……不太明白怎么发成代码格式

Hello. 发表于 2020-5-1 13:49:35

星河主炮 发表于 2020-5-1 13:43
没发成代码格式抱歉了……不太明白怎么发成代码格式

如何发代码段

星河主炮 发表于 2020-5-1 14:04:22

Hello. 发表于 2020-5-1 13:49
如何发代码段

感激不尽
页: [1]
查看完整版本: 适用于py3.8的统计代码行数实现