python 029 第一题
#比较用户输入的两个文件def compare_file(file_name_1,file_name_2):
f1 = open(file_name_1)
f2 = open(file_name_2)
count = 0 #统计行数
differ = [] #统计不一样的行的位置
for each_line_1 in f1:
f2.seek(0) #调节内循环文件指针到文档初始位置
for each_line_2 in f2:
count += 1
if each_line_1 != each_line_2:
differ.append(count)
f1.close()
f2.close()
return differ
file_name_1 = input("请输入需要比较的头一个文件名:")
file_name_2 = input("请输入需要比较的另一个文件名:")
compare_file(file_name_1,file_name_2)
length = len(differ)
if length == 0:
print("两个文件完全相同!")
else:
print("两个文件共有【%d】"%length)
for each in differ:
print("第%d行不一样"%each)
图片中出现的非法多字节序列的错误该怎么解决呢,不知道怎么来的 open里面加上 encoding = 'utf-8'
#比较用户输入的两个文件
def compare_file(file_name_1,file_name_2):
f1 = open(file_name_1,encoding='utf-8')
f2 = open(file_name_2,encoding='utf-8')
count = 0 #统计行数
differ = [] #统计不一样的行的位置
for each_line_1 in f1:
f2.seek(0) #调节内循环文件指针到文档初始位置
for each_line_2 in f2:
count += 1
if each_line_1 != each_line_2:
differ.append(count)
f1.close()
f2.close()
return differ
file_name_1 = input("请输入需要比较的头一个文件名:")
file_name_2 = input("请输入需要比较的另一个文件名:")
compare_file(file_name_1,file_name_2)
length = len(differ)
if length == 0:
print("两个文件完全相同!")
else:
print("两个文件共有【%d】"%length)
for each in differ:
print("第%d行不一样"%each)
open加个参数:
encoding="utf-8" 是我文件有问题嘛?因为我运行小甲鱼的代码也是出现一样的错误 莫待无花空折枝 发表于 2020-5-24 21:41
是我文件有问题嘛?因为我运行小甲鱼的代码也是出现一样的错误
不是 电脑不一样有的编码和文本的编码不能对应上就无法解码 Twilight6 发表于 2020-5-24 21:41
open里面加上 encoding = 'utf-8'
请输入需要比较的头一个文件名:something.txt
请输入需要比较的另一个文件名:something2.txt
Traceback (most recent call last):
File "C:/Users/admin/Desktop/课后练习/008-比较用户输入的两个文件的不同.py", line 22, in <module>
compare_file(file_name_1,file_name_2)
File "C:/Users/admin/Desktop/课后练习/008-比较用户输入的两个文件的不同.py", line 8, in compare_file
for each_line_1 in f1:
File "D:\python3.7\lib\codecs.py", line 322, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb4 in position 0: invalid start byte
又出现这个错误 看都看不懂 莫待无花空折枝 发表于 2020-5-24 21:51
又出现这个错误 看都看不懂
emmm那试试 把 utf-8改成 GB18030 Twilight6 发表于 2020-5-24 21:54
emmm那试试 把 utf-8改成 GB18030
疯狂尝试{:10_256:}
话说你最佳和我一样多了{:10_327:} 永恒的蓝色梦想 发表于 2020-5-24 21:55
疯狂尝试
话说你最佳和我一样多了
哈哈{:10_287:}
我想破 300 这个月 {:10_278:} Twilight6 发表于 2020-5-24 21:54
emmm那试试 把 utf-8改成 GB18030
请输入需要比较的头一个文件名:something.txt
请输入需要比较的另一个文件名:something2.txt
Traceback (most recent call last):
File "C:/Users/admin/Desktop/课后练习/008-比较用户输入的两个文件的不同.py", line 20, in <module>
differ = file_compare(file1, file2)
File "C:/Users/admin/Desktop/课后练习/008-比较用户输入的两个文件的不同.py", line 8, in file_compare
line2 = f2.readline()
UnicodeDecodeError: 'gb18030' codec can't decode byte 0x80 in position 20: illegal multibyte sequence 莫待无花空折枝 发表于 2020-5-24 22:04
哈哈 什么鬼怎么什么编码都不行...有毒 本帖最后由 Twilight6 于 2020-5-25 07:22 编辑
莫待无花空折枝 发表于 2020-5-24 22:04
你重新创建txt文件时候选择以 utf-8 编码保存
莫待无花空折枝 发表于 2020-5-24 22:04
以 utf-8 编码保存看楼上 Twilight6 发表于 2020-5-24 22:05
你重新创建txt文件时候选择以 utf-8 编码保存
请输入需要比较的头一个文件名:something.txt
请输入需要比较的另一个文件名:something2.txt
两个文件共有【187】处不同:
第 2 行不一样
第 3 行不一样
第 4 行不一样
第 5 行不一样
第 6 行不一样
第 7 行不一样
第 8 行不一样
第 9 行不一样
第 10 行不一样
第 11 行不一样
第 12 行不一样
第 13 行不一样
第 14 行不一样
第 15 行不一样
第 17 行不一样
第 18 行不一样
第 19 行不一样
第 20 行不一样
第 21 行不一样
第 22 行不一样
第 23 行不一样
第 24 行不一样
第 25 行不一样
第 26 行不一样
第 27 行不一样
第 28 行不一样
第 29 行不一样
第 30 行不一样
第 31 行不一样
第 32 行不一样
第 33 行不一样
f2.seek(0) #调节内循环文件指针到文档初始位置
for each_line_2 in f2:
那我的这个错误在哪里 结果有点夸张 莫待无花空折枝 发表于 2020-5-24 22:21
那我的这个错误在哪里 结果有点夸张
错在不能用两个for循环因为外面的for每次循环一次里面就要for就要全部循环结束才到外面的下一次 Twilight6 发表于 2020-5-24 22:33
错在不能用两个for循环因为外面的for每次循环一次里面就要for就要全部循环结束才到外面的下一次
明白了想当然了大佬辛苦了
莫待无花空折枝 发表于 2020-5-24 22:35
明白了想当然了大佬辛苦了
{:10_297:}别叫大佬,我只是努力奋斗的咸鱼 {:10_257:}
页:
[1]