IndexError:列表索引超出文本文件范围(Python)

时间:2013-12-08 02:02:04

标签: python list python-3.x

我有一些代码在永久的while循环中,每当我尝试从文本文件中获取随机行时,它偶尔会抛出一个索引错误。任何人都可以帮我吗?我已经检查了我的文本文件,里面有452行。起初我认为这是一些数字错误所以我减少了上限,但错误不断发生。带星号的代码就是造成错误的原因。

        if len(bank)==445:
            bank = []

        randinte = random.randint(1,450)
        samecheck(randinte, bank, 450)

        text_file = open("text.txt", "r")
        **line = text_file.readlines()[randinte]**
        twitter.update_status(
            status=line)
        text_file.close()
        bank.append(randinte)
编辑:谢谢大家的帮助!这是我最终使用和工作的代码。 repopulate()是一种按顺序从1-451填充银行的方法。

        if len(bank)==5:
            bank = []
            repopulate()

        random.shuffle(bank)   
        text_file = open("text.txt", "r")
        lines = text_file.readlines()
        line = lines[bank.pop()]
        twitter.update_status(
            status=line)
        text_file.close()

1 个答案:

答案 0 :(得分:1)

如果没有看到你的文本文件,为什么你可能会收到这些索引错误就不清楚了,但是如果可能的话,最好避免像文件长度那样硬编码。另一种选择是使用choice模块中的random方法,只选择从readlines()返回的随机行,如下所示:

    if len(bank)==445:
        bank = []

    text_file = open("text.txt", "r")
    lines = text_file.readlines()

    line = random.choice(lines) # choose a random line

    twitter.update_status(
        status=line)
    text_file.close()