파이썬/파이썬(python) 중급

[24-10 파이썬] 메일머지 구현하기

Olivia-BlackCherry 2022. 9. 4. 19:11

메일 머지

똑같은 내용인데, 

특정 단어만 바꾸어서 여러명에게 편지나 메일을 보내야 하는 경우가 있다. 

 

이럴 때, 

파이썬을 이용하면 시간을 절약할 수 있다.

 

업무 자동화 이야기는 많이 들어봤을 것이다.

파이썬을 이용해 반복적인 업무를 간단히 처리해서 

시간을 벌 수 있다는 거다. 

 

오늘은 메일머지의 기본 기능인

특정 단어만 바꾸어 문서를 대량 생산해보는 방법을 구현한다. 

 

오늘의 미션

이름만 바꾸어 여러 장의 글 만들기

- hierarchy

- text.txt

- names.txt

 

 

1. names.txt 파일을 불러온다. 

with open("./input/Names/names.txt") as file:
    name_list = file.readlines()
print(name_list)

파일 안의 내용이 한 줄씩 리스트형태로 반환되었다. 

그런데 한 요소당 한 줄씩 띄어쓰기(\n)가 있어, 공백이 발생한다. 

 

 

 

2. 공백 제거

공백을 제거하는 방법은 다양하다.

 

1) replace()

for name in name_list:
    name = name.replace("\n", '')
    print(name)

 

2) strip()

for name in name_list:
    name = name.strip()
    print(name)

 

 

3. 글 불러오기

with open("./input/Letters/text.txt") as letter:
    letter = letter.read()

 

 

4.  글에서 이름 바꾸기

아래의 원본에서 Olivia 대신 다른 이름을 넣으려고 한다.

replace 함수를 써서 바꿔준다.

old_name = "[name]"
for name in name_list:
    name = name.strip()
    letter = letter.replace(old_name, name)

 

 

5. 새롭게 저장할 파일 명과 위치 정하기

파일 경로를 만드는 방법을 두 가지로 소개한다. 

1) 문자열 합치기

old_name = "Olivia"
for name in name_list:
    name = name.strip()
    letter = letter.replace(old_name, name)
    location = "./output/ReadyToSend/" + name + ".txt"
    print(location)

 

2) f스트링으로 넣기

with open(f"./output/Complete!/{name}.text", mode="w") as mail:
    mail.write(letter)

 

<최종완성>

with open("./input/Names/names.txt") as file:
    name_list = file.readlines()
print(name_list)

with open("./input/Letters/text.txt") as letter:
    letter = letter.read()

old_name = "Olivia"
for name in name_list:
    name = name.strip()
    letter = letter.replace(old_name, name)
    with open(f"./output/Complete!/{name}.text", mode="w") as mail:
        mail.write(letter)