|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 豌图酱 于 2017-3-1 15:21 编辑
- def countline(file,sym): #统计每种编程文件的数量和行数
-
- count=0
- line_count=0
- for eachfile in file:
- for each in eachfile[2]:
- if os.path.splitext(each)[1] == sym:
- count+=1
- name=os.path.join(eachfile[0],each)
- with open(name) as symfile:
- try:
- for eachline in symfile:
- line_count+=1
- except UnicodeDecodeError:
- pass
- return (count,line_count)
- import easygui as f
- import os
- dir = f.diropenbox(msg='请选择您的代码库')
- files = os.walk(dir)
- symbal=['.py','.c','.cpp','.pas','asm']
- txt=''
- linesum=0
- for each in symbal:
- txt +=( '【%s】源文件%d个,源代码%d行\n'%(each,countline(files,each)[0],countline(files,each)[1]))
- linesum+=countline(files,each)[1]
- rate =linesum/100000
- remain = 100000-linesum
- msg = ('您目前共累计编写了%d行代码,完成进度:%d\n离十万行代码还差%d行,请继续努力!'%(linesum,rate,remain))
- f.textbox(msg,'统计结果',txt)
复制代码
一开始没有做异常处理的时候会显示
UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 808: illegal multibyte sequence
但是做了异常处理以后一行代码都统计不到了,求问不知是代码的问题还是编码问题导致真的一个py文件都读取不到啊??
【.py】源文件61个,源代码0行
【.c】源文件0个,源代码0行
【.cpp】源文件0个,源代码0行
【.pas】源文件0个,源代码0行
【asm】源文件0个,源代码0行
这个代码是正确
- def countline(file,sym): #统计每种编程文件的数量和行数
-
- count=0
- line_count=0
- for eachfile in file: #files = os.walk(dir),
- #遍历top路径下的所有目录,然后返回一个三元组(路径,包含目录,包含文件)[0][1][2]一一对应
-
- for each in eachfile[2]:
- #eachfiles返回的是所有文件
- if os.path.splitext(each)[1] == sym:
- count += 1
- name = os.path.join(eachfile[0],each)
-
- with open(name,"rb") as symfile:
- try:
- for eachline in symfile:
- line_count += 1
- except UnicodeDecodeError:
- pass
- return (count,line_count)
- import easygui as f
- import os
- dir = f.diropenbox(msg='请选择您的代码库')
- files = os.walk(dir)
- symbal = ['.py','.c','.cpp','.pas','asm']
- txt=''
- linesum=0
- for each in symbal:
- (c,v)= countline(files,each)
- txt += ( '【%s】源文件%d个,源代码%d行\n'%(each, c, v))
- linesum += v
- rate = linesum/100000
- remain = 100000-linesum
- msg = '您目前共累计编写了%d行代码,完成进度:%d\n离十万行代码还差%d行,请继续努力!'% (linesum,rate,remain)
- f.textbox(msg, '统计结果', txt)
复制代码的,在open函数是,写下读取规则
|
|