사실, 이 이야기는 전제조건이 있는 이야기이다.
1. 데이터 입력이 이루어지는 프로그램이다.
2. 데이터 입력자는 컴퓨터를 모르는 혹은 프로그래밍을 모르는 컴맹이다.
3. 데이터 조건에 대해서 설명하기 귀찮다.
사실 3번이 제일 중요한 것인데, 일을 하다보면 깜박하거나 “일단 데이터를 주시고 이야기하시죠.” 가 되는 경우가 많다. 거기다가 일단 엑셀 200줄이 넘어가다보면 (아니 사실은 100줄 이하여도…) 내부 데이터를 하나하나 들여다보는게 귀찮은게 사실이다.
데이터를 받았다.
데이터를 받고 나서 데이터를 다 보면 좋겠지만 위에 말한데로 귀찮기도 하고 10줄 정도 보고 정말 수정해야 할 것 같은 데이터라면 다시 요청하겠지만 아니라면 그냥 csv로 저장한 후에 파이썬으로 불러서 일괄작업을 수행한다.
그런데, 데이터에 “,”가 들어있다?
엑셀에서는 기본적으로 셀 내부에 어떠한 값이 들어가더라도 왠만하면 수용한다.
거기다가 csv 변환 시, 오류를 뱉지도 않는다. 이런 값들을 그대로 csv로 들어가게 되면 어떻게 될까.
특히 셀 내부에 “,”가 들어가게 되면 문제가 발생한다. 바로 구분자 문제가 발생한다. 데이터를 실컷 만들고 돌렸더니 대략 3,000줄 부근에서 내가 예상하지 못한 값이 튀어나와 “문자열이 아닙니다!”, “숫자가 아닙니다!” 등의 오류가 표출될 것이다.
차라리…. 오류가 나는게 좋기는 하다. 너무 예외 처리를 잘 해둬서 오류 없이 잘 돌아간다면… 그건 또 그것 나름의 지옥같은 상황이 벌어질 수 있다.
물론 오류처리를 열심히 하면 된다.
물론 모든 오류 상황, 예외 상황을 가정하고 작업하면 된다. 가능은 하다. 그런데 고작 간단한 작업 하나하면서 그런 시간을 투자하는건… 앞뒤가 맞지 않는 상황이 되어버린다.
그냥 openpyxl 라이브러리를 이용하자.
openpyxl 라이브러리로 엑셀 데이터에 접근하여 데이터를 다루자. 그게 맘 편하다. 그리고 시간도 절약된다.
간단한 배치작업 짜다가 쓸데없이 다 갈아 엎은 오늘 하루를 되돌아보며 이렇게 기록으로 남긴다.