책 쓰는 엔지니어
수 천 개의 텍스트 파일을 엑셀 하나로 합쳐 보자(2) 본문
2020/05/31 - [일반인을 위한 업무자동화] - 수 천 개의 텍스트 파일을 엑셀 하나로 합쳐 보자(1)
본 강좌는 이전 강좌에서부터 이어지는 내용입니다. 이번에는 단순히 파이썬 라이브러리를 설치하는 과정과 이를 통해 csv파일을 xlsx로 변환하는 과정만 다루어 볼 것이므로 굳이 이전 강좌를 읽고 오실 필요는 없습니다.
자, 오늘은 겉멋을 좋아하는 사람이라면 반드시 숙지해야 될 기본 스킬을 가르쳐 드리도록 하겠다. 이전 글에서 파이썬을 써야 하는 이유를 설명한 적이 있다. 여러분이 어떤 어려워 보이고 복잡한 작업을 수행하고 싶다고 치자. 이럴 때 구글을 조금만 둘러보면 프로그래밍을 아주 잘하는 뛰어난 고수가 만들어서 무료로 배포해 둔 패키지가 반드시 있을 것이다. 오늘은 그걸 가져와서 사용하는 방법을 배워 볼 것이다.
단순 업무를 컴퓨터에게 하청 줘버리는 것도 겉멋 부리기 좋은 요소지만, 그 작업을 세계 정상급 개발자의 솜씨를 무료로 빌려와 수행할 수 있다면 더더욱 겉멋 부리기 좋지 않겠는가?
자, 먼저 여러분들은 구글 검색에 익숙해져야 한다. 우리는 지난 강좌에서 수 천 건의 개인정보를 하나씩 불러와 csv파일로 저장하는 작업을 마쳤다. 이제 이 csv파일을 xlsx파일(엑셀 파일) 형태로 바꾸려면 어떻게 해야 할까? 여기에는 두 가지 방법이 있을 것이다.
(1) 작업을 수행하는 과정에서 처음부터 csv가 아니라 xlsx로 저장하도록 프로그램을 바꾼다.
(2) 작업이 다 끝난 뒤 csv파일을 xlsx로 바꿔 준다.
오늘은 후자를 실습해 볼 것이다. 후자가 더 간단하기 때문이다. 전자를 수행해 보고 싶은 독자가 계실 것 같아 약간의 힌트를 드리겠다. 구글에 "파이썬 xlwt"라고 검색해 보도록 하자. xlwt는 엑셀을 출력(write) 하는데 특화된 라이브러리다. 이 라이브러리를 이용하면 작업을 쉽게 수행할 수 있을 것이나, 기존 코드의 for문에서 write 부분을 크게 수정해야 할 것이다.
자, 구글에 "파이썬 csv xlsx 변환"이라고 검색해 보자. 많은 자료가 좌라락 뜰 것이다. 네이버나 다음과 같은 다양한 포털이 있지만 왜 필자가 구글을 고집하는 걸까? 그건 바로 IT기술 관련 자료는 99%가 영어로 되어 있고, 영어로 된 사이트를 검색하는 데에는 구글만큼 편한 도구가 없기 때문이다.
여러 검색 결과물들 중 필자의 관심을 가장 끌었던 것은 바로 이 페이지다.
https://code.i-harness.com/ko-kr/q/10dd882
이 페이지에서 시키는 대로 한번 작업을 수행해 보도록 하자. 참고로 이 사이트의 문장들은 말투가 어딘가 모르게 이상하다. 아마 원래는 영어로 된 사이트지만 자동으로 한글로 번역된 것이 아닐까?
먼저 cmd창을 켜 준다. 여러분은 이제 이 창을 능숙하게 켤 수 있을 것이다. 혹시 아직도 cmd창을 켜는 데 익숙하지 않은 독자가 있다면 반성하기 바란다. cmd창을 키보드만 이용하여 멋지게 켜는 것은 겉멋의 알파요 오메가이기 때문이다.
여담이지만 cmd창에 ipconfig라고 입력하면 무슨 글자가 좌라락 뜰 것이다. 여러분 컴퓨터의 ip주소와 관련된 정보들이다. 정말 별 것 아니지만 글자가 갑자기 많이 떠오르기에 허세 부리기 딱 좋다.
한때 "여자 후배가 컴퓨터를 고쳐달라는 부탁을 하기에 cmd창에 ipconfig를 치고, 책상을 쾅 내리치며 '젠장 해킹이야 지켜내지 못했어!'라고 했더니 그 여후배가 눈물을 흘리며 '하지만 나는 지켰잖아.'라고 대답해서 둘이 연인 사이가 되었다"는 내용의 우스갯소리가 인터넷상에서 인기였던 적이 있다. 이 이야기에 감명을 받아 아래와 같은 글을 적어본 적이 있었다.
헌법 스터디 중, 끓어오르는 분노를 참지 못하고 책상을 쾅 내리치고 말았다.
"젠장, 북한은 헌법상 미수복지역이야!"
"하지만 내 마음은 정복했잖아!"
커플 탄생.
아무튼, 필자가 왜 이렇게까지 ipconfig라는 자주 쓰지도 않을 명령어에게 쓸데없이 지면을 할애하면서 비중을 두고 있냐면, 컴퓨터를 좀 할 줄 아는 사람으로 보이고 싶을 때 허세를 부리는 용도로 쓰기 좋기 때문이다.
위 글 초반에 등장하는 필자의 대학원 시절 책상 사진을 보면, 우측 모니터 우측 하단에 ipconfig가 떡하니 등장한다.
오래간만에 겉멋을 부리는 방법을 전수할 기회가 찾아와 흥분했다. 다시 본론으로 돌아오자면, cmd창에 아래 명령어를 입력해 보기 바란다.
pip
하얀 글자가 좌라락 떠오른다면 여러분 컴퓨터에는 파이썬 설치가 아주 잘 된 것이며, 무언가 심상치 않은 오류 메시지가 뜬다면 안타깝지만 여러분의 컴퓨터에는 pip이 설치되지 않은 것이다. 파이썬 설치 화면에서 pip 설치 유무를 묻는 창이 떴을 텐데 이때 여러분들은 예스맨의 기운을 받아들였어야 했다. 신앙이 부족했던 탓이다. 혹시나 pip이 정상 작동하는 독자 여러분들은 아래 명령어를 입력하자.
pip install pyexcel pyexcel-xlsx
pip은 파이썬을 위한 패키지를 관리해 주는 툴이다. install은 설치를 하라는 의미이다. 즉 위 명령어는 pyexcel과 pyexcel-xlsx라는 패키지를 컴퓨터에 설치하라는 의미다. 더 자세한 사항은 구글에 "파이썬 pip"이라고 검색해 보기 바란다. 참고로 필자는 PIP을 만드신 분과 사진도 찍었고, 같이 밥도 먹었다.
혹시나 pip에 문제가 있는 사람은 구글에 "윈도 pip 설치" 등을 검색해서 문제를 해결하고 오자. 파이참에서도 패키지를 설치할 수 있으니 "파이참 패키지 설치" 등으로도 검색해 보면 좋겠다.
자, 설치가 다 끝났다면 두 가지 방법이 있다. 하나는 textmerge/폴더를 워킹 디렉터리로 하는 파이썬 인터프레터 창을 하나 띄우는 것이고 다른 하나는 textmerge/폴더 안에 새로운 파이썬 스크립트를 작성해서 집어넣은 뒤 git bash로 실행시키는 것이다. 익숙해지면 전자의 경우 시간을 대폭 단축할 수 있다. 관심 있다면 "파이썬 워킹 디렉터리"라고 검색해 보자.
자, 파이참을 실행하자.
이때 automation_edu를 선택해 버리면 working directory가 automation_edu/로 잡히게 된다. 그러니 textmerge를 선택하고 ok를 눌러 주자. 사소한 차이가 있긴 한데 이로 인해 여러분들이 고생할 수 있다. ok를 누르면, 경우에 따라 현재 창에서 실행할 것인지 새로운 탭에서 실행할 것인지 물어보는 창이 뜰 수도 있다. 취향에 따라 선택하자. 필자는 노빠꾸 상남자이므로 무조건 현재 창에서 실행한다.
정상적으로 폴더가 실행되었다면 좌측에 목록이 뜰 것이다. 여기서 textmerge 폴더를 마우스 우클릭하고, new - python file을 선택해 준다. 그러면 새로운 파이썬 파일이 생성된다. 파일명은 적당히 지어주자.
그리고 새로 만들어진 파일에 아래 코드를 복사해서 붙여 넣는다.
>>> from pyexcel.cookbook import merge_all_to_a_book
>>> import glob
>>> merge_all_to_a_book(glob.glob("merged_personal_info.csv"), "output.xlsx")
굵은 글자로 표시한 영역에는 엑셀로 변환하고 싶은 csv파일 이름을 적어주자. 맨 뒤의 "output.xlsx"에는 출력할 파일의 이름을 적으면 된다. 파일명을 바꾸고 싶다면 다른 이름으로 바꿔주자.
모두 끝났다면 ctrl + s를 눌러 파일을 저장해 주자.
이제 위 코드를 실행하는 세 가지 방법을 알려주도록 하겠다.
(1) git bash를 이용하는 방법 지금까지 하던 대로 git bash를 이용해서 실행해 주면 된다. 필자는 왠지 모르게 이 방법이 가장 편하다. 강좌를 하지 않을 때에는 파이참도 쓰지 않는다. 참고로 필자가 가장 좋아하는 조합은 Atom으로 코드를 수정하고, git bash 또는 cmd 등 별도 창에서 코드를 실행하는 것이다.
(2) pycharm의 콘솔을 이용하는 방법
상단의 Tools - python Console을 차례로 클릭해 주자. 그러면 파이참 아랫부분에 아래와 같은 새로운 구역이 생겨난다.
예전 강좌에서 파이썬 설치 직후 IDLE를 실행했을 때가 기억나는가? 그와 동일한 기능을 가진 인터프레터가 이렇게 실행되었다. 여기에 한 번 아래 코드를 입력해 보자.
>>> print("hello, world!")
여기에 코드를 입력하면 바로 한 줄씩 실행된다. 돈 계산할 때 몹시 편리하다.
본문의 코드에서 Ctrl + A를 눌러 코드 전체를 선택하고, Ctrl + C를 눌러 코드를 복사하자. 그리고 파이썬 콘솔에 붙여 넣고 엔터를 눌러주자. 잠시 기다리면 엑셀 파일이 생겨나 있을 것이다.
(3) pycharm의 실행 기능을 이용하는 방법
혹시 (2)의 예제를 따라 했다면 out file의 이름을 적절히 수정하기 바란다. 동일한 파일 이름으로 출력되면 차이를 못 느끼기 때문이다.
Alt + Shift + F10을 눌러 주자. 그리고 엔터를 한번 더 눌러 주자. 끝났다.
필자가 첫 시간부터 여러분에게 파이참을 설치하기를 권한 이유는 크게 두 가지다.
첫째로 코드 실행이 쉽다. 콘솔 창도 제공하고 파일 자체 실행도 가능하다. 규모가 큰 코드를 짤 때에는 콘솔을 띄워 두고 "이 코드가 과연 돌아갈까?" 싶은 코드를 한 줄씩 집어넣어 테스트할 수 있다. git bash나 cmd가 익숙하지 않은 분들은 앞으로 파이참의 코드 실행 기능을 적극적으로 사용하기 바란다.
둘째로 문법 오류를 실시간으로 잡아준다. 여러분은 아직 잘 못 느끼겠지만 코딩을 하다 보면 사소한 문법을 틀리거나 오타를 내는 바람에 버그가 발생하는 경우가 굉장히 잦다. 파이참에서 코드를 작성하면 오타가 있거나 문법 오류가 있는 부분에 빨간색 밑줄을 실시간으로 그어 주기 때문에 오류가 날 가능성이 크게 줄어든다.
여러모로 초보자가 입문용으로 사용하기에 큰 장점이 있다.
변환이 끝난 결과물은 굳이 열어보지 않도록 하겠다. 뭐 잘 변환됐을 것이니.
오늘은 "해결하고 싶은 문제"가 있으면 이를 구글에 검색해서 "패키지"를 찾아보고, 그 패키지를 설치하고 활용하는 방법까지를 얕게 체험해 봤다.
이번 예제에서는 어떻게 csv가 xlsx라는 다른 포맷으로 변화되는지 그 과정은 하나도 알 필요가 없었다. 그냥 "전문가가 만들었을 테니 잘 작동하겠지.. 손발이 편해질 수 있으면 됐지 원리가 중요한가?"라고 생각하며 믿고 쓰는 것이다.
이래서 파이썬이 강력하다. 조건문, 반복문 등 기초적인 수준을 벗어나면 그 뒤로는 그냥 패키지를 다운로드하여서 활용하면 되기 때문이다. 초반에만 살짝 고생하면 새로운 세상이 열린다.
이로써 첫 번째 업무 자동화 테마인 '수 천 개의 텍스트 파일' 시리즈가 마무리되었다. 다음에는 어떤 작업을 자동화할지 아이디어가 아직 없는 상태이므로 고민도 좀 해 보고, 예제 코드를 짜는 시간도 충분히 갖고 돌아오도록 하겠다.
'일반인을 위한 업무자동화' 카테고리의 다른 글
사진 수 천 장을 인스타그램에 올리기 좋게 편집하기 (0) | 2020.05.31 |
---|---|
아이돌 사진 수 천장을 한 번에 다운로드해 보자 (3) (3) | 2020.05.31 |
아이돌 사진 수 천장을 한 번에 다운로드해 보자 (2) (0) | 2020.05.31 |
아이돌 사진 수 천장을 한 번에 다운로드해 보자 (1) (0) | 2020.05.31 |
수 천 개의 텍스트 파일을 엑셀 하나로 합쳐 보자(1) (0) | 2020.05.31 |
수 천 개의 텍스트 파일을 1초 안에 합쳐 보자 (2) (1) | 2020.05.30 |
수 천 개의 텍스트 파일을 1초 안에 합쳐 보자 (1) (1) | 2020.05.30 |
업무 자동화를 위한 첫걸음 - 깃과 IDE 세팅 (0) | 2020.05.29 |