Ошибка FileExistsError: [Errno 17] File exists при открытии файла

def module():
    redak = open (str(input("Как называется файл?: ")), "x")
    redak.write (str(input("На какой текст хотите поменять?: ")))
    redak.close()  
     
if __name__== "__main__":
    L = str(input("Форматировать текст?"))
    if L == "Да" or "+":
        module()

При выполнении кода выплывает такая ошибка:

Traceback (most recent call last):
  File "test.py", line 9, in <module>
    module()
  File "test.py", line 2, in module
    redak = open (str(input("Как называется файл?: ")), "x")
  FileExistsError: [Errno 17] File exists: 'b.txt'

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

Автор решения: Ivan Didyk

Исправление нескольких ошибок в вашем коде:

def module():
    redak = open (str(input("Как называется файл?: ")), "w") # "w" откроет файл на запись
                                                             # Если такого файла нет,
                                                             # он будет создан
    redak.write (str(input("На какой текст хотите поменять?: ")))
    redak.close()  


if __name__== "__main__":
    L = str(input("Форматировать текст?"))
    # Интерпретатор читает 'L == "Да" or "+"' как (L == "Да") или ("+"). Это всегда будет истинно
    if L in ("Да", "+"): # Если L есть среди "Да", "+"
        module()

→ Ссылка
Автор решения: MarianD
  1. Не нужно конвертировать строку на строку (трижды в вашей программе) - функция input() возвращает прямо строку, значит, применение функции str() не нужно.

  2. Второй параметр функции open() у вас "x" - это значит, что при попытке открыть уже существующий файл выдается ошибка, которую вы получили.

    Существуют 2 решения вашей проблемы:

    1. Нужно задать имя файла, который еще не существует.
    2. Вместо "x" применить "w" (опасно, т.к. вы можете потерять важной файл) или "a" (тоже опасно, но менее, т.к. вы можете изменить важной файл).
→ Ссылка