|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
程序能运行,但是最终统计出来的结果是错误的,我写了30个脚本左右,显示代码只有70行。
- import easygui as g
- import os
- def result(start):
- lines=0
- total=0
- text=''
- for i in source:
- lines = source[i]
- total += lines
- text +='【%s】源文件%d个,源代码%d行\n' % (i,file[i],lines)
- title='统计结果'
- msg='目前写了%d行代码\n完成进度:%f %%\n离10万行代码还差%d行,继续努力' %(total,total/100000,100000-total)
- g.textbox(msg,title,text) #显示结果
- def code(name):
- lines = 0
- with open(name) as f:
- print('正在分析文件:%s' % name)
- try:
- for el in f:
- lines += 1
- except UnicodeDecodeError:
- pass #格式不兼容的忽略掉
- return lines
- def search(start):
- os.chdir(start) #改变工作目录(start)
- for ef in os.listdir(os.curdir): #目录中的文件名(当前目录)
- ext=os.path.splitext(ef)[1] #留下每个文件的扩展名
- if ext in target:
- lines=code(ef) #调用,打开每个后缀名一样的文件,lines=文件数量???不确定
- try: #下面的都搞不懂!!!!!
- file[ext] += 1
- except KeyError:
- file[ext] = 1
- try:
- source[ext] += lines
- except KeyError:
- source[ext] = lines
- if os.path.isdir(ef):
- search(ef) #递归调用
- os.chdir(os.pardir) #返回上一级目录
- source={}
- file={}
- target=['.py','.java']
- g.msgbox('打开存放所有代码的文件夹','代码统计')
- path=g.diropenbox('选择代码库')
- search(path)
- result(path)
复制代码
if ext in target:
lines=code(ef) #调用,打开每个后缀名一样的文件,lines=文件数量???不确定
try: #下面的都搞不懂!!!!!
file[ext] += 1
except KeyError:
file[ext] = 1
try:
source[ext] += lines
except KeyError:
source[ext] = lines
if os.path.isdir(ef):
search(ef) #递归调用
os.chdir(os.pardir) #返回上一级目录
这一部分的代码弄不清楚原理是什么?
求前辈解惑!!!!!!!!!!!!!!万分感谢!!!!!
将代码改成这样试试:
- import easygui as g
- import os
- def result(start):
- lines=0
- total=0
- text=''
- for i in source:
- lines = source[i]
- total += lines
- text +='【%s】源文件%d个,源代码%d行\n' % (i,file[i],lines)
- title='统计结果'
- msg='目前写了%d行代码\n完成进度:%f %%\n离10万行代码还差%d行,继续努力' %(total,total/100000,100000-total)
- g.textbox(msg,title,text) #显示结果
- def code(name):
- lines = 0
- with open(name, encoding="utf-8") as f:
- print('正在分析文件:%s' % name)
- try:
- for el in f:
- lines += 1
- except UnicodeDecodeError:
- pass #格式不兼容的忽略掉
- return lines
- def search(start):
- os.chdir(start) #改变工作目录(start)
- for ef in os.listdir(os.curdir): #目录中的文件名(当前目录)
- ext=os.path.splitext(ef)[1] #留下每个文件的扩展名
- if ext in target:
- lines=code(ef) #调用,打开每个后缀名一样的文件,lines=文件数量???不确定
- try: #下面的都搞不懂!!!!!
- file[ext] += 1
- except KeyError:
- file[ext] = 1
- try:
- source[ext] += lines
- except KeyError:
- source[ext] = lines
- if os.path.isdir(ef):
- search(ef) #递归调用
- os.chdir(os.pardir) #返回上一级目录
- source={}
- file={}
- target=['.py','.java']
- g.msgbox('打开存放所有代码的文件夹','代码统计')
- path=g.diropenbox('选择代码库')
- search(path)
- result(path)
复制代码
|
|