|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
在问之前我也查过,看过论坛里面的相关帖子,也大概理解了为什么
然后今天具体想问的就是我这样递归可不可行(35课练习)
重点在27行,我在那里用的是新建一个列表来进行查询,是不是就不用返回上一层了啊
我试过更改我的文件夹,让他有各种各样的子目录,同名文件,都能全访问到
但还是来问问比较安全
- import easygui as g
- import os.path,os,sys
- def sumline(new_way):
- line = 0
- f = open(new_way,encoding='UTF-8')
- for each_line in f.readline():
- line += 1
- f.close()
- return line
- def check(ext,new_way):
- global py,c,cpp,pas,asm,pyline,cline,cppline,pasline,asmline
- if ext == '.py':
- py += 1
- pyline += sumline(new_way)
- elif ext == '.c':
- c += 1
- cline += sumline(new_way)
- elif ext == '.cpp':
- cpp += 1
- cppline += sumline(new_way)
- elif ext == '.pas':
- pas += 1
- pasline += sumline(new_way)
- elif ext == '.asm':
- asm += 1
- asmline += sumline(new_way)
- def lookfor(way):
- list0 = os.listdir(way)
- for each in range(len(list0)):
- path = list0[each]
- new_way = os.path.join(way,list0[each])
- ext = os.path.splitext(path)[1]
- if os.path.isdir(new_way):
- lookfor(new_way)
- os.chdir(os.pardir)#这里我删了以后也可以访问到所有文件夹
- elif ext in ['.py','.c','.cpp','.pas','.asm']:
- check(ext,new_way)
- py=c=cpp=pas=asm=0
- pyline=cline=cppline=pasline=asmline=0
- way = g.diropenbox('请选择您的代码库','浏览文件夹')
- lookfor(way)
- text1 = ('[.py]源文件%d个,源代码%d行\n' % (py,pyline))
- text2 = ('[.c]源文件%d个,源代码%d行\n' % (c,cline))
- text3 = ('[.cpp]源文件%d个,源代码%d行\n' % (cpp,cppline))
- text4 = ('[.pas]源文件%d个,源代码%d行\n' % (pas,pasline))
- text5 = ('[.asm]源文件%d个,源代码%d行' % (asm,asmline))
- text = text1 + text2 + text3 + text4 + text5
- sum = pyline+cline+cppline+pasline+asmline
- percentage = '{:.2f}%'.format(100*sum/100000)
- msg = '''您目前共累积编写了%d行代码,完成进度:%s
- 离10万行代码还差%d行,请继续努力''' % (sum,percentage,100000-sum)
- title = '统计结果'
- g.textbox(msg=msg,title=title,text=text)
- sys.exit()
复制代码 |
|