Есть скрипт, который должен 2 раза вытащить из файла 2 разные строки(рандомные).
Функция ConvertList - переводит текстовый файл в список.
Функция RandomString - достает рандомный индекс из списка.
Сам код:
import random name_file = "test.txt" def ConvertList(file_name): file = open(file_name, "r") convert_list = list(file) file.close return convert_list def RandomString(l_name): len_list = len(l_name) - 1 rand_numb = random.randint(0, len_list) rand_str = l_name[rand_numb] return rand_str string_list = ConvertList(name_file) for x in range(0,2): string = RandomString(ConvertList(name_file)) print(string) file = open(name_file, "w") string_list.remove(string) text_file = "".join(string_list) file.write(text_file) file.close
При выполнении кода выдает ошибку:
Traceback (most recent call last):
File “C:\Users\user\Desktop\test.py”, line 25, in <module>
string = RandomString(ConvertList(name_file))
File “C:\Users\user\Desktop\test.py”, line 16, in RandomString
rand_numb = random.randint(0, len_list)
File “C:\Python\lib\random.py”, line 218, in randint
return self.randrange(a, b+1)
File “C:\Python\lib\random.py”, line 196, in randrange
raise ValueError(“empty range for randrange() (%d,%d, %d)” % (istart, istop, width))
ValueError: empty range for randrange() (0,0, 0)
Судя по ошибке размер randint сводится к 0 и он не может взять число от 1,0. Но с файлами всё впорядке.
Задача скрипта выдать мне 2 раза рандомные значения, причем выданные значения должны удалятся из файла, что бы не было повторов.
Т.е в файле 10 строчек, функция должна взять рандом из этого числа и 1 раз она спокойно берет его, но вот на втором круге, когда файл уже отредактирован и так уже не 10 строчек, а 9 - выдает ошибку.
В чём может быть проблема?