鱼C论坛

 找回密码
 立即注册
查看: 1192|回复: 9

[已解决]异常代码不知道怎么解决

[复制链接]
发表于 2020-7-25 12:04:06 | 显示全部楼层 |阅读模式

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

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

x
请输入需要比较的头一个文件名:C:\\Users\\DRD\\Desktop\\something.txt
请输入需要比较的另一个文件名:C:\\Users\\DRD\\Desktop\\something1.txt
Traceback (most recent call last):
  File "G:/新建文件夹 (4)/21.py", line 7, in <module>
    list2=list(f1)
UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 26: illegal multibyte sequence
最佳答案
2020-7-25 12:53:44
黄jz 发表于 2020-7-25 12:47
list1=[]
count1=0
name1=input("请输入需要比较的头一个文件名:")


[b]

代码改成这样试试运行:
list1=[]
count1=0
name1=input("请输入需要比较的头一个文件名:")
name2=input("请输入需要比较的另一个文件名:")
f1=open(name1,encoding='utf-8')
f2=open(name2,encoding='utf-8')
list2=list(f1)
list3=list(f2)
len2=len(list2)
len3=len(list3)
if len2<len3:
    for i in range(len2):
        if list2[i] != list3[i]:
            i=i+1
            list1.append(i)
            count1=count1+1
if len3<len2:
    for i in range(len3):
        if list2[i] != list3[i]:
            i=i+1
            list1.append(i)
            count1=count1+1
if len3==len2:
    for i in range(len3):
        if list2[i] != list3[i]:
            i=i+1
            list1.append(i)
            count1=count1+1
print("两个文件共有【",count1,"】处不同")
for i in list1:
    print("第",i,"行不一样")
f1.close()
f2.close()

如果运行还是报错,那么把这个代码文件和你重新新建一个文件夹,放一起

然后将你需要比较的文本重新另存为,按照下面的操作来:

第一步,打开 txt 文件选择另存为:

                               
登录/注册后可看大图



第二步设置编码为 utf-8:


                               
登录/注册后可看大图


然后重新运行代码,这样就不会报错



[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-25 12:05:11 From FishC Mobile | 显示全部楼层
把源码发上来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-25 12:06:51 | 显示全部楼层
发代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-25 12:10:51 | 显示全部楼层


代码中的 open 里都加上参数 encoding = 'UTF-8' 试试看

下次问问题记得发完整代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-25 12:47:40 | 显示全部楼层
list1=[]
count1=0
name1=input("请输入需要比较的头一个文件名:")
name2=input("请输入需要比较的另一个文件名:")
f1=open(name1,'r')
f2=open(name2,'r')
list2=list(f1)
list3=list(f2)
len2=len(list2)
len3=len(list3)
if len2<len3:
    for i in range(len2):
        if list2[i] != list3[i]:
            i=i+1
            list1.append(i)
            count1=count1+1
if len3<len2:
    for i in range(len3):
        if list2[i] != list3[i]:
            i=i+1
            list1.append(i)
            count1=count1+1
if len3==len2:
    for i in range(len3):
        if list2[i] != list3[i]:
            i=i+1
            list1.append(i)
            count1=count1+1
print("两个文件共有【",count1,"】处不同")
for i in list1:
    print("第",i,"行不一样")
f1.close()
f2.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-25 12:53:44 | 显示全部楼层    本楼为最佳答案   
黄jz 发表于 2020-7-25 12:47
list1=[]
count1=0
name1=input("请输入需要比较的头一个文件名:")


[b]

代码改成这样试试运行:
list1=[]
count1=0
name1=input("请输入需要比较的头一个文件名:")
name2=input("请输入需要比较的另一个文件名:")
f1=open(name1,encoding='utf-8')
f2=open(name2,encoding='utf-8')
list2=list(f1)
list3=list(f2)
len2=len(list2)
len3=len(list3)
if len2<len3:
    for i in range(len2):
        if list2[i] != list3[i]:
            i=i+1
            list1.append(i)
            count1=count1+1
if len3<len2:
    for i in range(len3):
        if list2[i] != list3[i]:
            i=i+1
            list1.append(i)
            count1=count1+1
if len3==len2:
    for i in range(len3):
        if list2[i] != list3[i]:
            i=i+1
            list1.append(i)
            count1=count1+1
print("两个文件共有【",count1,"】处不同")
for i in list1:
    print("第",i,"行不一样")
f1.close()
f2.close()

如果运行还是报错,那么把这个代码文件和你重新新建一个文件夹,放一起

然后将你需要比较的文本重新另存为,按照下面的操作来:

第一步,打开 txt 文件选择另存为:

                               
登录/注册后可看大图



第二步设置编码为 utf-8:


                               
登录/注册后可看大图


然后重新运行代码,这样就不会报错



[/b]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-25 12:59:47 | 显示全部楼层
Twilight6 发表于 2020-7-25 12:53
代码改成这样试试运行:

问题解决了,谢谢,但是我想问一下为什么会出现这样的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-25 13:01:46 | 显示全部楼层
黄jz 发表于 2020-7-25 12:59
问题解决了,谢谢,但是我想问一下为什么会出现这样的问题



编码问题,不同编码,编码汉字的字节不同

当你 open 编码和 文件编码不一致时候,Python 读取文件内容时候解码字节长度不同就会导致报错

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-25 13:02:38 | 显示全部楼层
Twilight6 发表于 2020-7-25 13:01
编码问题,不同编码,编码汉字的字节不同

当你 open 编码和 文件编码不一致时候,Python 读取文件 ...

ok,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-25 13:06:04 | 显示全部楼层
Twilight6 发表于 2020-7-25 13:01
编码问题,不同编码,编码汉字的字节不同

当你 open 编码和 文件编码不一致时候,Python 读取文件 ...

我之前重置过一次电脑,现在复制小甲鱼给出的答案代码运行也会出现这样的问题,是重置了系统的原因吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 20:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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