尝试两次打印功能时,此StopIteration错误是什么?

时间:2018-04-04 02:00:10

标签: python

我试图制作一个程序,从每行上有不同单词的文本文件中选择多个随机行。 当我尝试打印random_line两次时,我得到错误StopIteration on line = aline。如何运行函数multipule次而不会出错?

import random

def random_line(afile):
    line = next(afile)
    for num, aline in enumerate(afile):
      if random.randrange(num + 2): continue
      line = aline
    return line

f = open("english.txt", 'r')
print(random_line(f))
f.close()

1 个答案:

答案 0 :(得分:1)

由于扫描仪已到达文件末尾,您将收到StopIteration错误 - 没有更多行可供阅读!

在尝试再次扫描文件之前,您需要将其移回到开头。在第一次函数调用后,可以使用seek(0)完成此操作。

f = open("english.txt", 'r')
print(random_line(f))
f.seek(0)
print(random_line(f))
f.close()