统计代码行数

在这里插入图片描述
整理的部分文件操作如下:
os.chdir(路径)#改变当前工作目录到指定的路径
os.listdir(os.curdir) :#返回指定的文件夹包含的文件或文件夹的名字的列表
os.curdir 返回当前目录 (’.’)
os.path.splitext(each_file)[1]#分割路径,返回路径名和文件扩展名的元组
os.path.isdir(path)返回path规范化的绝对路径。
另外附上使用到的easygui操作:
path = easygui.diropenbox(msg=None, title=None)
ccbox(msg=‘Shall I continue?’, title=’ ‘)
multenterbox(msg=‘Fill in values for the fields.’, title=’ ‘)
fileopenbox(msg=None, title=None)
textbox(msg=’’, title=’ ‘, text=’’, codebox=False, callback=None, run=True)
实现代码:

import easygui as g
import os
import time

start_time=[2018,9,1]
p=(0,31,28,31,30,31,30,31,31,30,31,30,31)
r=(0,31,29,31,30,31,30,31,31,30,31,30,31)

def tongji(i):#统计行数
    s=0
    try:
        with open(i) as f:
            print("正在统计文件:%s..."%i)
            for r in f:
                 s+=1
    except:
        pass
    return s;

def search(path):#深度搜索
    try:
        os.chdir(path)#定位到指定路径
    except:
        return
    mulu=os.listdir(os.curdir)#返回文件或文件夹的名字的列表
    for i in mulu:
        houzhui=os.path.splitext(i)[1]#提取后缀
        if houzhui in file_houzhui:
            r=tongji(i)#统计行数
            global sum_r
            sum_r+=r
            try:
                file_num[houzhui]+=1
            except:
                file_num[houzhui]=1
            try:
                file_r[houzhui]+=r
            except:
                file_r[houzhui]=r
        if os.path.isdir(i):
            search(i)
            os.chdir(os.pardir) #返回上一层目录



    
file_houzhui=[".c",".cpp",".py",".cc",".java",".pas",".asm"]
file_r={}
file_num={}
sum_r=0
msg="请选择你存放代码的文件夹"
path=g.diropenbox(msg,"选择文件夹")
search(path)
text=""
day=0
time=int(time.strftime('%Y%m%d',time.localtime(time.time())))
time=[time//10000,time//100%100,time%100]
ch="今天是"+str(time[0])+"年"+str(time[1])+"月"+str(time[2])+"日"
while not(start_time[0]==time[0] and start_time[1]==time[1] and start_time[2]==time[2]):
    start_time[2]+=1
    day+=1
    if start_time[0]%4==0 and start_time[0]%100!=0 or start_time[0]%400==0:
        if start_time[1]>12:
            start_time[1]=1
            start_time[0]+=1
        if start_time[2]>r[start_time[1]]:
            start_time[1]+=1
            start_time[2]=1
    else:
        if start_time[1]>12:
            start_time[1]=1
            start_time[0]+=1
        if start_time[2]>p[start_time[1]]:
            start_time[1]+=1
            start_time[2]=1

for i in file_r:
    text+="【%s】源文件%d个,源代码%d行\n"%(i,file_num[i],file_r[i])
msg=ch+"开学已经%d天,已经累计完成%d行代码,平均每天%d行"%(day,sum_r,sum_r/day)
g.textbox(msg,"统计结果",text)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值