Проблема заключается в том, что вы используете with
.При использовании оператора with
необходимо предоставить выполнение, которое возвращает что-то вместе с переменной, определенной как as
:
with process as foo:
do_something
Это оценивает process
, вызывает метод __enter__
длявозвращаемое значение (которое называется «защита контекста») и присваивает возвращаемое значение __enter__
переменной foo
.После этого выполняется do_something
и, независимо от того, что происходит, вызывается метод __exit__
объекта защиты.Подробнее здесь , откуда взято это объяснение.Поэтому вы не можете просто использовать with
с вашим именем файла, как вы это делали в своем коде.
Если я правильно понял, ваш файл artist.txt содержит 10 строк с разными исполнителями, и вы пытаетесьслучайным образом выбрать одну из этих строк и распечатать ее.Вы могли бы, например, сделать следующее:
import random
with open('artists.txt', 'r') as file:
ARTIST = random.randint(0, 9)
print(file.readlines()[ARTIST])
, который по сути аналогичен
import random
file = open('artists.txt', 'r')
ARTIST = random.randint(0, 9)
print(file.readlines()[ARTIST])
file.close()
, но безопаснее и эффективнее, поскольку файл автоматически закрывается сразу после выполненияваш код.
Это будет читать все строки в вашем файле, помещать их в список, выбирать случайное число от 0 до 9 и печатать объект в списке в этой позиции, давая вам случайного художника изваш файл.