permission deined и вторая ошибка 'tuple' has no attribute 'write' после правки выдаёт ошибку my_file.close() innendationerror

Bыдаёт несколько ошибок:

  • my_file = open("loveeI.txt", "w") пишет

    permission denied

  • 'tuple' has no attribute 'write'

from random import randint
while True :
     my_file = open("loveeI.txt","w")    
     print(" Hi, my name is Robolove ") 
     print("Tell me two names ")
     name1 = input(" First  name - ")
     name2 = input(" Second name - ")

     my_file.write(name1)
     my_file.write(name2)

     x = randint(20,100)
     print (x,"%")
     if x > 70:
         print("UUUU I SMELL LOVE")
     else:
         print("You can try")

     if x > 50:
      print("It's your choice")

     else:
         print("Try again, I could say something wrong ")


     my_file.close()

      # This code was made for fun. Don't take it serious

Ответы (2 шт):

Автор решения: n1tr0xs

PermissionDenied выдает потому что слишком часто открывается файл и система блокирует доступ. Чтобы ее исправить воспользуйтесь менеджером with

from random import randint
with open('loveeI.txt','w') as my_file:
    while True :
        print(" Hi, my name is Robolove ")
        print("Tell me two names ") 
        name1 = input(" First name - ")
        name2 = input(" Second name - ")
        my_file.write(name1)
        my_file.write(name2) 
        x = randint(20,100) 
        print (x,"%") 
        if x > 70: 
            print("UUUU I SMELL LOVE") 
        else: 
            print("You can try") 
        if x > 50: 
            print("It's your choice") 
        else: 
            print("Try again, I could say something wrong ")
→ Ссылка
Автор решения: MarianD

Прежде всем, ваша программа не скончается — ваш цикл бесконечный.
(Я напишу, как это исправить.)

Вы вероятно запустили вашу программу снова, пока ваша предыдущая (бесконечная) всё время непрерывно работала — с тем же самым файлом!

Потому ваша первая ошибка («permission denied»).

(Когда вы знаете как, окончите насильственно всё, что вы запускали, когда нет, просто сделайте, что пишу дальше.)

Ни каких ошибок ваша программа не выдала для меня. Но какие-то предложения:

  1. Вместо

    my_file = open("loveeI.txt","w")
    

    используйте

    my_file = open("другое_имя.txt", "а") 
    

    т.е. используйте какое-то другое имя (т.к. ваше первое заблокировано), и примените параметр "a" (append) вместо "w" (write), чтобы всякий раз не переписывать ваш выводной файл (а только добавить записи за его конец).


  1. Вместо

    my_file.write(name1)
    my_file.write(name2)
    

    используйте

    my_file.write(name1 + "\n")         # "\n" - символ перехода на новую строку
    my_file.write(name2 + "\n")
    

    чтобы в выводном файле было всякое имя на своей строке — иначе всё будет только в одной.


  1. Вместо

    if x > 50:
        print("It's your choice")
    
    else:
        print("Try again, I could say something wrong ")
    
    
    my_file.close()
    

    (всё кроме последней строки только для контекста) используйте

    if x > 50:
        print("It's your choice")
    
    else:
        print("Try again, I could say something wrong ")
    
    if name1 == "" and name2 == "":
        my_file.close()
        break                   # немедленный выход из цикла while True
    

    чтобы ваш бесконечный цикл, т.е. ваша игра, окончилась при нажатии только Enter для обоих имен.

→ Ссылка