brunch

You can make anything
by writing

C.S.Lewis

by 마르코 Feb 05. 2016

취업을 도와줘

자소서 오타를 찾아주는 파이썬

아래 링크는 <내 손 안의 비서> 첫 글이자 전체 목차




갈수록 취업난이 심해진다. 똑똑한 후배와 동생들이 연락이 와서 요즘 너무 힘들다고 사는 이야기를 전한다. 마음이 짠하다. "네가 진짜 하고 싶은 게 무엇인지 찾아라."라는 등의 말은 마지막 학기가 되어, 취업이 발등에 불 떨어지듯 찾아 온 사람들에게는 사실 사치다. 그 사실을 잘 안다. 나도 4학년 2학기는 취업 준비로 정말 눈코뜰새 없이 바빴다. 학기가 시작하면서 많은 기업들이 매주 채용 공고를 내어놓기 시작했다. 한 주에 3개에서 많게는 10개까지 채용 공고를 마주하면, 다 쓰기는 당연히 불가능했다. 나는 당시 매우 문송('문과라서 죄송합니다.')했기 때문에, 쏟아지는 채용 공고 중에서 한 주에 3개 정도를 추려서 지원했다. 물론 처음부터 그랬던 것은 아니고, 첫 주에 썼던 자기소개서가 모두 불합격 통보를 받고 나서는 더 마음이 급했던 것 같다. 


그 중에서도 아직도 기억이 나는 열이 뻗치는 실수가 하나 있다. 롯데 면세점 자기 소개서를 준비하고 있었다. 롯데 면세점은 한국에서 제1 면세점이 아니던가? 그래서 심지어 자기 소개서 작성 역사상 처음으로 롯데면세점에 오래 일한 분의 책도 한 권 사서 읽었다. 그리고 혼을 담아서, 자기 소개서에 담아 넣었다. 물론 다른 자소서와 중복되는 신변잡기에 대한 내용은 복붙이었다. 그런데 즐거운 마음으로 자기 소개서를 첨부해서 접수를 마치고 자소서를 살펴보는데, 으악! "롯데 면세점"이라고 들어가야 할 곳에 "현대중공업"이라고 쓰여있었다. 지금은 정확히 기억이 나지 않지만, 기억을 더듬어 보면 '롯데 면세점에 들어간다면, 고객 만족을 실현하는 최고의 현대중공업인이 되겠다.' 같은 문장이었던 것 같다. 미쳤지 정말. 떨어졌다. 3일 간 내 영혼을 담은 자소서는 한 줌의 재가 되어버렸다. 


취업 준비로 고생하는 많은 대학생을 위해서 준비했다. 이름하야 '자소서에서 회사 이름을 확인해주길 바래.py' 프로젝트다.


작동 방식은 아래와 같다.

1. 자소서를 모아놓는 폴더를 하나 만든다.

2. 폴더 안에 txt 형태의 파일로 자소서를 모아둔다. 단, 파일의 이름은 회사 이름으로 한다.

3. 자소서를 작성할 때마다 그 폴더 안에 여러 자소서가 쌓일텐데, 그 회사 이름을 목록으로 삼아서 자소서에 실수로 다른 회사 이름을 넣지는 않았는지 확인한다.


나는 바탕화면에 resume라는 폴더를 만들거다.(~/Desktop/resume) 그리고 자소서를 작성했다고 가정해보자. 분노의 경험을 벗삼아서, 회사 이름은 '롯데 면세점', '현대 중공업', '삼성 전자' 이렇게 세 가지로 해보겠다.


~/Desktop/resume

롯데 면세점.txt
현대 중공업.txt
삼성 전자.txt


그리고 각각의 세 파일 모두에 "삼성 전자를 위해 이 한 몸 바치겠습니다."라는 진부한 표현을 넣어보도록 하자. (취준생 여러분은 저 표현을 절대로 쓰지 말기를 바란다. 나라도 안뽑을거다.)


그리고 저 폴더 안에 파이썬 파일을 하나 만든다. 파일 이름은 check_resume.py 라고 해보자.


~/Desktop/resume/check_resume.py

import os

company_files = [] 

for _, _, files in os.walk("."):
      for file in files:
            if os.path.splitext(file)[-1] == ".txt":
                  company_files.append(file)

company_names = [os.path.splitext(company)[0] for company in company_files]

for company in company_files:
      current = os.path.splitext(company)[0]
      file = open(company)
      lines = file.readlines()
      for line in lines:
            for each in company_names:
                  if each in line and current != each:
                        print(">> %s 자소서에 %s이(가) 들어있습니다" % (current, each))


이 파일은 크게 두 부분으로 나뉜다. 첫 번째 부분은 ".txt"라는 확장자로 저장된 파일 이름을 모으고, 그 확장자를 제거한 회사 이름만 모은다.


import os

company_files = [] 

for _, _, files in os.walk("."):
      for file in files:
            if os.path.splitext(file)[-1] == ".txt":
                  company_files.append(file)

company_names = [os.path.splitext(company)[0] for company in company_files]
파이썬 os.walk()를 이용한 파일 탐색 및 for loop(링크


간단하게 코드를 설명하면, 파일을 다룰 수 있는 도구 상자를 꺼낸다.("import os") 그리고 자소서 파일을 모아놓을 빈 리스트를 하나 만들어놓자.("company_files = []") 그리고 for loop를 통해 해당 파이썬과 같거나 하위에 있는 폴더 전체의 파일을 찾는다.("for _, _, files in os.walk("."):") 그 파일들이 각각 '.txt' 확장자를 갖고 있는지 확인한다. ("for file in files: if os.path.splitext(file)[-1] == ".txt":") 그 확장자를 갖고 있으면, 미리 만들어 둔 리스트에 파일 이름을 추가한다.("company_files.append(file)") 파일 이름은 확장자를 포함하고 있으므로, 순수하게 회사 이름으로만 이루어진 리스트를 따로 만들어서, 이름만 넣어둔다.("company_names = [os.path.splitext(company)[0] for company in company_files]")


두 번째 부분은 각 파일을 다시 한 번 돌면서, 텍스트 파일 안에 글을 읽어들여서 해당 회사와 다른 회사 이름이 들어있으면 ">> 롯데 면세점 자소서에 삼성전자이(가) 들어있습니다" 라는 경고를 출력한다. 


for company in company_files:
      current = os.path.splitext(company)[0]
      file = open(company)
      lines = file.readlines()
      for line in lines:
            for each in company_names:
                  if each in line and current != each:
                        print(">> %s 자소서에 %s이(가) 들어있습니다" % (current, each))


설명하자면 이미 위에서 저장해둔 파일 이름 리스트를 for loop을 통해서 일일이 확인해준다.("for company in company_files:") 그리고 해당하는 파일의 회사 이름을 확장자를 제거하고 담아둔다.("current = os.path.splitext(company)[0]") 이제 그 파일을 읽는다.("file = open(company)") 파일 안을 각각의 라인으로 저장하고,(lines = file.readlines()) 각 라인을 다시 for loop으로 확인한다.(" for line in lines:") 이미 저장해둔 전체 회사 리스트에서 한 개씩 항목을 꺼내서,("for each in company_names:") 해당 라인에 그 이름이 들어가 있는지 그리고 그 이름이 현재 자소서의 이름과 일치하지 않는지를 확인한다.("if each in line and current != each:") 그 이름이 현재 자소서와 일치하지 않으면 경고 문구를 출력한다.("print(">> %s 자소서에 %s이(가) 들어있습니다" % (current, each))")



내가 이걸 그때도 알았더라면 롯데 면세점이 다니고 있을지도 모른다. 하지만 나는 지금의 생활에 매우 만족하고 있으니 서류 조차 통과하지 않은 건 큰 다행인 거 같다. 여러분에게도 오늘 취준의 실패가 내 인생의 실패를 의미하는 것은 아니다. 그러니 조금만 더 노력하면 분명히 좋은 결과가 있을 것이다. 취준생 화이팅 :) 개발자도 화이팅 :)




프로그래밍은 외계어가 아닙니다. 실생활에서 쓸 수 있는 프로그래밍을 알립니다. 그리고 댓글이 달릴수록 더 쉬워집니다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari