Home > Net >  I am unable to create multiple files with this code, what is wrong?
I am unable to create multiple files with this code, what is wrong?

Time:08-12

So I'm trying to write a program that takes names from a list and adds it to a letter. A text file is created for each name for the letter however the code seems to stop working at that point.

letter = []
names = []
file = open("Input/Letters/starting_letter.txt", "r")
letter = file.readlines()
file.close()
name1 = open("Input/Names/invited_names.txt", "r")
names = name1.readlines()
name1.close()
for name in names:
    create_letter = open(f"{name}.txt", "w")
    for line in letter:
        line = line.replace("[name],", f"{name},")
        create_letter.write(line)
    create_letter.close()

I get the error message

Traceback (most recent call last):
  File "C:\Users\Default User\PycharmProjects\Mail Merge Project Start\main.py", line 10, in <module>
    create_letter = open(f"{name}.txt", "w")
OSError: [Errno 22] Invalid argument: 'Aang\n.txt'

Is there a problem with the way I am creating the files?

CodePudding user response:

You can't have newlines in your file name. It is invalid in your OS/filesystem.

Remove them with:

open(f"{name.strip()}.txt", "w")

Or:

open(f"{name.replace('\n', '')}.txt", "w")
  • Related