2016-10-19 5 views
1

Я использую random.randint для генерации случайного числа, а затем назначая это число переменной. Тогда я хочу, чтобы напечатать строку с номером I присвоенного переменной, но я получаю сообщение об ошибке:Печать случайной строки из txt-файла?

list index out of range

Вот что я пробовал:

f = open(filename. txt) 
lines = f.readlines() 

rand_line = random. randint(1,10) 
print lines[rand_line] 
+2

0 Количество строк в вашем файле: (Вернее, сколько элементов находится в списке 'lines') – UnholySheep

+1

Попробуйте randint (0, len (lines)) –

+0

@ A.Kot Это все еще может пойти не так. –

ответ

6

Вы хотите использовать random.choice

import random 
with open(filename) as f: 
    lines = f.readlines() 
    print(random.choice(lines)) 
0

Этот код верен, если вы хотите передать строку в функцию open и что у вас нет места после точки ... Однако будьте осторожны к индексированию в Python, а именно он начинается с 0, а не 1, а затем заканчивается на len(your_list)-1.

Использование random.choice лучше, но если вы хотите следовать вашей идеи он предпочел бы быть:

import random 
with open('name.txt') as f: 
    lines = f.readlines() 
    random_int = random.randint(0,len(lines)-1) 
    print lines[random_int] 

С randint включает в себя как границу, вы должны смотреть до len(lines)-1.

0
f = open(filename. txt) 
lines = f.readlines() 

rand_line = random.randint(0, (len(lines) - 1)) # https://docs.python.org/2/library/random.html#random.randint 
print lines[rand_line] 
Смежные вопросы