
如上图报错信息,这是一个判断两个文件是否相同,若不相同则输出不相同的那一行的函数
谢谢回复!

如上图报错信息,这是一个判断两个文件是否相同,若不相同则输出不相同的那一行的函数
谢谢回复!
关注【以下回答由 GPT 生成】
问题原因: 这个错误发生在以下两行代码中:
if f.readlines()[line] != p.readlines()[line]:
if line == len(f)-1 and f[line] == p[line]:
这是由于每次调用readlines()函数时,文件的指针都会移动到文件的结尾,所以在第二次调用readlines()函数时,返回的列表为空,导致出现IndexError: list index out of range错误。
解决方法: 可以将文件的内容存储为列表,然后在使用时直接引用列表中的元素。以下是修正后的代码:
def compare(filename1, filename2):
f = open(filename1, "r")
p = open(filename2, "r")
f_lines = f.readlines()
p_lines = p.readlines()
lines = min(len(f_lines), len(p_lines))
for line in range(lines):
if f_lines[line] != p_lines[line]:
return line + 1
if line == len(f_lines) - 1 and f_lines[line] == p_lines[line]:
return
f.close()
p.close()
compare("D:\HuaweiMoveData\Users24901\Desktop\大学存档\Python\txt使用\BoringTextFile.txt", "D:\HuaweiMoveData\Users124901\Desktop\大学存档\Python\txt便")
这样修改后,每次调用readlines()函数只会执行一次,将文件的内容存储在列表中,在后续的比较过程中直接引用列表中的元素,避免了错误的发生。
【相关推荐】