Ari小虎鱼 发表于 2022-5-17 21:08:46

文件找不同代码求教

from pathlib import Path

f1 = Path(input("请输入需要比较的头一个文件名:"))
f2 = Path(input("请输入需要比较的另一个文件名:"))
f1 = open(f1,'r')
f2 = open(f2,'r')

count = 0
ans = []
for line1 in f1:
    line2 = f2.readline()
    count += 1
    if line1 != line2:
      ans.append(count)

f1.close()
f2.close()
   
if len(ans) == 0:
    print("一模一样!")
else:
    print(f"两个文件共有【{len(ans)}】处不同:")
    for each in ans:
      print(f"第{each}行不一样")

不管两个文件内容有多么千差万别,它始终打印
一模一样!
{:10_284:}

qq1151985918 发表于 2022-5-17 21:11:42

本帖最后由 qq1151985918 于 2022-5-17 21:35 编辑

{:9_219:}

Twilight6 发表于 2022-5-17 21:16:25


运行了下你的代码,可以正常出现结果:



Ari小虎鱼 发表于 2022-5-17 21:23:13

Twilight6 发表于 2022-5-17 21:16
运行了下你的代码,可以正常出现结果:

{:10_324:}

Twilight6 发表于 2022-5-17 21:24:50

Ari小虎鱼 发表于 2022-5-17 21:23




哈哈 我懂了,你忘记加路径了{:10_282:}

Ari小虎鱼 发表于 2022-5-17 21:31:40

Twilight6 发表于 2022-5-17 21:24
哈哈 我懂了,你忘记加路径了

什么都没改,它现在变成这样了
请输入需要比较的头一个文件名:C:\Users\Zhou Yiyun\Desktop\测试\1.txt
请输入需要比较的另一个文件名:C:\Users\Zhou Yiyun\Desktop\测试\2.txt
Traceback (most recent call last):
File "C:\Users\Zhou Yiyun\Desktop\测试\^第029讲-找不同.py", line 10, in <module>
    for line1 in f1:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 2: illegal multibyte sequence
>>>
就很懵

Twilight6 发表于 2022-5-17 21:33:03

Ari小虎鱼 发表于 2022-5-17 21:31
什么都没改,它现在变成这样了

就很懵



哈,那是因为你文件编码和 open 打开编码不一致哈

你试试在两个 open 参数中添加 encoding = "utf-8"

Ari小虎鱼 发表于 2022-5-17 21:36:58

Twilight6 发表于 2022-5-17 21:33
哈,那是因为你文件编码和 open 打开编码不一致哈

你试试在两个 open 参数中添加 encoding = "utf ...

它终于正常了{:10_266:}
感谢我的神

Ari小虎鱼 发表于 2022-5-17 21:37:43

qq1151985918 发表于 2022-5-17 21:11


{:10_256:}

jackz007 发表于 2022-5-17 21:46:59

      文件比较的前提是,被比较的文件应当具有可比性,那么,什么是可比性?对于文本文件而言,首先,文件长度必须相等,然后,文件行数必须一致,最后,是对应行的字符数必须相等,否则,根本无法比较,而且,比较结果也毫无意义。
页: [1]
查看完整版本: 文件找不同代码求教