lomo_mo 发表于 2020-12-10 13:02:39

为啥直接复制代码还会出错

请输入需要比较的头一个文件名:config.txt
请输入需要比较的另一个文件名:first.txt
Traceback (most recent call last):
File "D:/新建文件夹 (2)/duibi.py", line 20, in <module>
    differ = file_compare(file1, file2)
File "D:/新建文件夹 (2)/duibi.py", line 7, in file_compare
    for line1 in f1:
UnicodeDecodeError: 'gbk' codec can't decode byte 0x81 in position 30: illegal multibyte sequence



这是代码
def file_compare(file1, file2):
    f1 = open('D:\\'+file1)
    f2 = open('D:\\'+file2)
    count = 0 # 统计行数
    differ = [] # 统计不一样的数量

    for line1 in f1:
      line2 = f2.readline()
      count += 1
      if line1 != line2:
            differ.append(count)

    f1.close()
    f2.close()
    return differ

file1 = input('请输入需要比较的头一个文件名:')
file2 = input('请输入需要比较的另一个文件名:')

differ = file_compare(file1, file2)

if len(differ) == 0:
    print('两个文件完全一样!')
else:
    print('两个文件共有【%d】处不同:' % len(differ))
    for each in differ:
      print('第 %d 行不一样' % each)

昨非 发表于 2020-12-10 13:04:17

更改open函数的编码参数

lomo_mo 发表于 2020-12-10 15:21:37

大佬,怎么改

lomo_mo 发表于 2020-12-10 15:22:20

昨非 发表于 2020-12-10 13:04
更改open函数的编码参数

大佬,怎么改

昨非 发表于 2020-12-10 15:24:17

lomo_mo 发表于 2020-12-10 15:22
大佬,怎么改

f=open(路径,encoding="UTF-8")

lomo_mo 发表于 2020-12-10 15:30:35

昨非 发表于 2020-12-10 15:24
f=open(路径,encoding="UTF-8")

请输入需要比较的头一个文件名:config.txt
请输入需要比较的另一个文件名:first.txt
Traceback (most recent call last):
File "D:/新建文件夹 (2)/dui.py", line 20, in <module>
    differ = file_compare(file1, file2)
File "D:/新建文件夹 (2)/dui.py", line 8, in file_compare
    line2 = f2.readline()
File "D:\新建文件夹 (2)\lib\codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte


我UTF-8是大写的

昨非 发表于 2020-12-25 00:15:46

lomo_mo 发表于 2020-12-10 15:30
请输入需要比较的头一个文件名:config.txt
请输入需要比较的另一个文件名:first.txt
Traceback (most ...

这个大小写一般不影响,你的文件用的可能是其他编码方式
页: [1]
查看完整版本: 为啥直接复制代码还会出错