鱼C论坛

 找回密码
 立即注册
查看: 2478|回复: 2

打开文件报错

[复制链接]
发表于 2017-4-23 18:17:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
下面的代码是第35课第4题,在第一个函数打开文件那里总会报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0x88 in position 118: illegal multibyte sequence。不知道为啥,帮忙看一下,谢谢。


import easygui as g

import os

Sum = 0

list1 = []

count_code = {}

file_dict = {}

def countf(file_name,ext):

    count = 0

    count_code.setdefault(ext,0)

    with open(file_name) as f:

        file_list = list(f)

        count = len(file_list)

        count_code[ext] += count

    return count_code

        
def count_file(ext):

    file_dict.setdefault(ext,0)

    file_dict[ext] += 1

    return file_dict

def file_type(path):

    os.chdir(path)

    all_files = os.listdir(path)

    for each_file in all_files:

        if os.path.isdir(each_file):

            file_type(each_file)

            os.chdir(os.pardir)

        elif os.path.isfile(each_file):

            ext = os.path.splitext(each_file)[1]

            if ext in '.py, .c, .cpp, .asm, .pas, .java':

                dict1 = count_file(ext)

                dict2 = countf(each_file,ext)

    for i in dict2.keys():

        Sum += dict2[i]

    n = (Sum/100000)*100

    left = 100000 - Sum

    for i in dict1.keys():

       list1.append('[%s]源文件 %d 个,源代码 %d 行' %(i,dict1[i],dict2[i]))

    g.textbox('您目前共累计编写了%d行代码,完成进度:%.2f %,离10万行代码还差%d行' % (Sum,n,left),'统计结果',text=list1)

path = g.diropenbox('请选择您的代码库')

file_type(path)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-4-24 20:03:21 | 显示全部楼层
32269100 发表于 2017-4-24 08:21
with open(file_name,encoding ='utf-8') as f:

为什么要这么改,encoding = 'utf-8'干嘛的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-25 07:38:54 | 显示全部楼层
用这个编码打开文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 18:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表