杨桃星星 2023-10-14 18:57 采纳率: 66.7%
浏览 5

这里的IndexError: list index out of range是什么问题?

img

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

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-14 21:13
    关注

    【以下回答由 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()函数只会执行一次,将文件的内容存储在列表中,在后续的比较过程中直接引用列表中的元素,避免了错误的发生。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月14日