我有一些代码在永久的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()
答案 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()