我试图制作一个程序,从每行上有不同单词的文本文件中选择多个随机行。 当我尝试打印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()
答案 0 :(得分:1)
由于扫描仪已到达文件末尾,您将收到StopIteration错误 - 没有更多行可供阅读!
在尝试再次扫描文件之前,您需要将其移回到开头。在第一次函数调用后,可以使用seek(0)
完成此操作。
f = open("english.txt", 'r')
print(random_line(f))
f.seek(0)
print(random_line(f))
f.close()