鱼C论坛

 找回密码
 立即注册
查看: 3083|回复: 7

我的程序老报错,大神帮我看看是哪里出了问题啊

[复制链接]
发表于 2015-12-20 20:49:18 | 显示全部楼层 |阅读模式
40鱼币
求助,python第三十五讲作业里的最后一题,大神帮我看看是哪里出了问题啊,老报错

import easygui as g
import os

read= []
def collect(every_parts):
    if every_parts != [[],0]:
        for each in every_parts[0]:
            print(each)
            file_open = open(each)
            read = file_open.read()
            for each in read:
                if each == '\n':
                    every_parts[1] += 1
        file_open.close()
        return every_parts[1]
    else:
        return 0
file_path = g.diropenbox('请选择您的代码库:','浏览文件夹','E:\\')

total=0

collect_py=[[],0]
collect_c=[[],0]
collect_cpp=[[],0]
collect_pas=[[],0]
collect_asm=[[],0]

for path,folder,file in os.walk(file_path):
    for each_file in file:
        (name,extention)=os.path.splitext(path+'\\'+each_file)
        if extention == '.py':
            collect_py[0].append(path+'\\'+each_file)
        elif extention == '.c':
            collect_c.append(path+'\\'+each_file)
        elif extention == '.cpp':
            collect_cpp.append(path+'\\'+each_file)
        elif extention == '.pas':
            collect_pas.append(path+'\\'+each_file)
        elif extention == '.asm':
            collect_asm.append(path+'\\'+each_file)
        else:
            continue

num_py = collect(collect_py)
num_c = collect(collect_c)
num_cpp = collect(collect_cpp)
num_pas = collect(collect_pas)
num_asm = collect(collect_asm)

total = num_py + num_c + num_cpp + num_pas + num_asm
finish = total / 1000
other = 100000 - total

msg = '您目前共累计编写了' + str(total) + '行代码,完成进度' + str(finish) + '%\n' + '离十万行代码还差' + str(other) + '行,请继续努力!'
title = '统计结果'
text = '【.py】源文件'+str(len(collect_py[0]))+'个,源代码'+str(num_py)+'行\n'+'【.c】源文件'+str(len(collect_c[0]))+'个,源代码'+str(num_c)+'行\n'+'【.cpp】源文件'+str(len(collect_cpp[0]))+'个,源代码'+str(num_cpp)+'行\n'+'【.pas】源文件'+str(len(collect_pas[0]))+'个,源代码'+str(num_pas)+'行\n'+'【.asm】源文件'+str(len(collect_asm[0]))+'个,源代码'+str(num_asm)+'行\n'

g.textbox(msg,title,text)


Traceback (most recent call last):
  File "C:\Users\Administrator\Desktop\homework0353.py", line 44, in <module>
    num_py = collect(collect_py)
  File "C:\Users\Administrator\Desktop\homework0353.py", line 10, in collect
    read = file_open.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 159: illegal multibyte sequence

最佳答案

查看完整内容

这是一个非常麻烦的问题,原因是源文件有中文,而中文的编码类型又不同,比如GBK,UTF-8等等,你可以将第9行改为 file_open = open(each,encoding='utf-8') 有可能解决。 我试了一下,最后输出如图。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-12-20 20:49:19 | 显示全部楼层
这是一个非常麻烦的问题,原因是源文件有中文,而中文的编码类型又不同,比如GBK,UTF-8等等,你可以将第9行改为 file_open = open(each,encoding='utf-8')
有可能解决。
我试了一下,最后输出如图。
output.png

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
hldh214 + 1 + 1 学习了~~~~~~~

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-12-20 21:08:24 | 显示全部楼层
看样子是编码问题?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-12-20 22:07:01 | 显示全部楼层
学习高手解决问题~:lol::lol:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-12-21 12:54:12 | 显示全部楼层
路过
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-12-22 15:57:56 | 显示全部楼层
~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-1-14 17:56:46 | 显示全部楼层
第一行放 #coding=utf-8
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-4-1 15:47:31 | 显示全部楼层
路过
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-18 21:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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