Форум сайта python.su
Проблема такая:
Есть скрипт, который должен 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
Отредактировано Apxumekmop (Май 2, 2016 08:25:24)
Офлайн
Переименуйте file во что нибудь другое
Офлайн
FirikНе помогло.
Переименуйте file во что нибудь другое
Офлайн
Сейчас порылся по поводу функций random, оказывается есть еще прелесть в виде random.choice().
Вытаскивает рандомную переменную из заданной последователности. Так вот, попробовал сделать через random.choice(), выдало схожую ошибку. Пишет, что не может взять последовательность из пустого списка.
Подправил немного блок, что бы посмотреть, что творится с переменной:
for x in range(0,2): new_string = ConvertList(name_file) print(new_string) string = RandomString(ConvertList(name_file)) file = open(name_file, "w") string_list.remove(string) text_file = "".join(string_list) file.write(text_file) file.close
Отредактировано Apxumekmop (Май 2, 2016 09:22:38)
Офлайн
Такс, как обычно, сам решил проблему.
Ошибка была в:
file.close
file.close()
Офлайн
Apxumekmopделайте так:
def ConvertList(file_name): file = open(file_name, “r”) convert_list = list(file) file.close return convert_list
def ConvertList(file_name): with open(filename) as f: return f.readlines()
Офлайн