|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
如题,我照抄答案的第4题,在
text+='【%s】源文件%d个,源代码%d行\n' % (i,file_list[i],lines)
出现问题 invalid character in identifier 无效参数
是我哪里打错了吗还是什么orz
下面是我照抄的代码
=============================================================
import easygui as g
import os
def show_result(start_dir):
lines=0
total=0
text=''
for i in source_list:
lines=source_list[i]
total+=lines
text+='【%s】源文件%d个,源代码%d行\n' % (i,file_list[i],lines)
title='统计结果'
msg='您目前共累积编写了%d行代码,完成进度:%.2f %%\n离10万行代码还差%d行,请继续努力!' % (total,total/1000,100000-total)
g.textbox(msg,title,text)
def calc_code(file_name):
lines=0
with open(file_name) as f:
print('正在分析文件:%s...' % file_name)
try:
for each_line in f:
lines+=1
except UnicodeDecodeError:
pass #不可避免会遇到格式不兼容的文件,这里忽略
return lines
def search_file(start_dir):
os.chdir(start_dir)
for each_file in os.listdir(os.curdir):
ext=os.path.splitext(each_file)[1]
if ext in target:
lines=calc_code(each_file) #统计行数
try:
fiel_list[ext]+=1
except KeyError:
file_list=1
try:
source_list[ext]+=lines
except KeyError:
source_list[ext]=lines
if os.path.isdir(each_file):
search_file(each_file)
os.chdir(os.pardir)
target=['.c','.cpp','.py','.cc','.java','.pas','.asm']
file_list={}
source_list={}
g.msgbox=('请打开您存放所有代码的文件夹'.'统计代码量')
path=g.diropenbox('请选择您的代码库:')
search_file(path)
show_result(path)
原因已查明,读.py文件时出现编码错误,因此代码走 except UnicodeDecodeError,导致统计出的行数为 0
我的修改建议如下(更新calc_code() ):
- def calc_code(file_name):
- lines = 0
- with open(file_name, encoding = 'utf-8') as f: #打开文件时,指定编码类型为utf-8
- print('正在分析文件:%s ...' % file_name)
- try:
- for each_line in f:
- lines += 1
- except UnicodeDecodeError:
- pass
- return lines
复制代码
|
|