Ваша проблема не в том, что вы не можете преобразовать i
в строку. Дело в том, что она уже является строкой даже до того, как вы попробуете, и поэтому добавление 1
к ней недопустимо.
Во-первых, вы read
это из файла. Это всегда возвращает str
:
iteration = read_file.read()
i = iteration # why can't I make you a string???????!!!!!!!!!!!
Затем вы пытаетесь добавить 1 к этой строке в нескольких местах, каждое из которых даст вам TypeError
:
copyfile("TestFile.docx", "TestFile(" + str(i+1) + ").docx")
print("File has been duplicated " + str(i+1) + " times.")
i += 1
Чтобы исправить это, преобразуйте строку в int сразу после прочтения, например так:
i = int(iteration)
Тогда весь остальной код будет работать, потому что весь остальной код ожидает, что i
будет int.
Однако вам следует подумать о том, чтобы упростить его, используя форматирование строк вместо того, чтобы вручную преобразовывать объекты в строки и объединять их. Например, это намного легче читать, и сложнее ошибиться:
copyfile("TestFile.docx", f"TestFile({i+1}).docx")
Или, если вам нужно работать со старыми версиями Python:
copyfile("TestFile.docx", "TestFile({}).docx".format(i+1))