CSV 정리 자동화, 삭제 기능보다 감사 보고서를 먼저 만든 이유

CSV Audit Cleaner 실제 실행 화면과 4행에서 2행으로 정리된 검증 결과

CSV 정리 자동화를 만들 때 처음 떠올리기 쉬운 기능은 ‘중복을 지운다’입니다. 그런데 실제 파일을 맡기는 사람 입장에서는 삭제보다 먼저 확인할 것이 있습니다. 어떤 행이 왜 빠졌는지, 원본은 그대로인지, 한 파일이 실패했을 때 다른 파일까지 멈추지는 않았는지입니다.

그래서 이번에 만든 CSV Audit Cleaner는 삭제 버튼보다 감사 보고서를 중심에 두었습니다. 2026년 7월 30일 정식판을 다시 빌드해 Windows에서 실행했고, 4행짜리 표본이 2행으로 정리되는 과정과 빈 행 1개·중복 1개·실패 0건을 실제 결과로 확인했습니다. 공개 판매본 기준 자동 검사는 32개 모두 통과했습니다.

파일을 깨끗하게 만드는 것과 설명 가능하게 만드는 것은 달랐습니다

공백을 자르고 빈 행을 버리는 코드는 짧게 만들 수 있습니다. 문제는 결과만 보면 사용자가 ‘원래 4행이었는데 왜 2행이 됐지?’라고 묻게 된다는 점입니다. 그 질문에 답하지 못하면 자동화는 빨라도 믿고 반복하기 어렵습니다.

프로그램은 실행할 때마다 새 결과 폴더를 만들고, 정리된 CSV와 함께 report.html, summary.json, run_log.jsonl을 남깁니다. HTML 보고서에서는 파일별 입력 행·출력 행·빈 행·중복 행·실패 수를 바로 볼 수 있습니다. 로그와 요약 파일은 나중에 다른 작업과 연결할 때 쓰도록 분리했습니다.

원본 파일을 덮어쓰지 않는 것도 같은 이유입니다. 실행 전후 원본의 SHA-256을 기록해 ‘정리 과정에서 원본이 바뀌지 않았는지’를 대조할 수 있게 했습니다. 보기 좋은 결과보다 되돌아갈 수 있는 결과를 먼저 만든 셈입니다.

클라우드 업로드 대신 이 PC 안에서만 처리하도록 범위를 잘랐습니다

요즘은 CSV를 대화형 서비스에 올려 분석하는 방법도 많습니다. 다만 고객 목록, 주문 내역, 내부 기록처럼 외부 업로드 여부를 먼저 따져야 하는 파일도 있습니다. 이 도구는 브라우저처럼 보이는 화면을 쓰지만 인터넷 사이트가 아니라 이 PC의 127.0.0.1에서만 열립니다. CSV 내용은 외부 서버로 보내지 않습니다.

대신 할 수 있는 일은 일부러 좁혔습니다. UTF-8, UTF-8 BOM, CP949 형식의 CSV에서 셀 앞뒤 공백, 완전히 빈 행, 전체 행 또는 지정한 열 기준의 중복을 정리합니다. 값의 의미를 추측하거나 주소·전화번호를 임의로 고치지 않습니다. Excel XLSX, PDF, 이미지도 대상이 아닙니다.

범위를 좁히면 화려한 기능은 줄지만 결과를 시험하기는 쉬워집니다. 한 파일이 실패해도 정상 파일은 계속 처리하고, 실패한 파일과 오류 종류는 보고서에 따로 남깁니다.

배치 처리에서는 한 파일의 실패가 전체 결과를 가리지 않게 했습니다

CSV가 한두 개일 때는 실패한 파일을 바로 알아차릴 수 있지만, 폴더째 처리하면 사정이 달라집니다. 열 이름이 다른 파일 하나 때문에 작업 전체가 중단되면 정상 파일도 다시 돌려야 하고, 오류를 무시하면 빠진 파일을 모른 채 결과를 넘길 수 있습니다. 그래서 각 파일의 성공과 실패를 따로 기록하고, 실패가 생겨도 처리 가능한 다음 파일은 계속 진행하도록 만들었습니다.

작업이 끝난 뒤에는 정리된 파일 수만 세지 않습니다. summary.json에서 전체 성공·실패 수를 보고, 실패가 있으면 run_log.jsonl의 파일명과 오류 종류를 확인하는 순서로 정했습니다. 정상 결과와 실패 기록이 한 실행 폴더에 함께 있어야 ‘폴더가 생겼으니 모두 끝났다’는 착각을 피할 수 있습니다.

배포 ZIP도 개발 폴더와 분리해 다시 확인했습니다

개발 중인 환경에서만 잘 돌아가는 프로그램은 구매자가 받는 완성품과 다릅니다. 그래서 판매용 ZIP을 별도 폴더에 전부 풀고 EXE를 직접 실행했습니다. 로컬 화면이 열리는지, 표본 CSV를 넣었을 때 정리 파일과 세 종류의 기록이 생기는지, 종료 뒤 프로세스가 남지 않는지를 순서대로 확인했습니다.

무료 Lite판도 같은 방식으로 새 폴더에서 시험했습니다. 공개 GitHub에 올린 ZIP을 다시 내려받아 로컬 원본과 SHA-256이 같은지 대조했고, 허용 범위인 100행은 처리되지만 101행은 안내와 함께 거부되는 경계도 확인했습니다. 이 검사는 기능 소개 문장보다 실제 전달 파일이 맞는지를 확인하기 위한 절차였습니다.

4행→2행 표본은 숫자보다 확인 순서가 중요했습니다

검증용 CSV에는 정상 행, 셀 앞뒤 공백, 빈 행, order_id가 같은 중복 행을 넣었습니다. 실행 후에는 먼저 원본이 남아 있는지 확인하고, 정리 파일의 행 수를 셌습니다. 그다음 보고서의 빈 행 1개·중복 1개·실패 0건이 실제 파일과 맞는지 대조했습니다.

여기서 화면에 ‘성공’이 떴다는 사실만으로 끝내지 않았습니다. 정식판 ZIP을 새 폴더에 풀어 실행하고, 결과 파일이 모두 생성되는지, 앱을 종료했을 때 프로세스가 남지 않는지까지 확인했습니다. 무료 Lite판은 100행까지 처리되고 101행 입력을 거부하는 경계도 따로 시험했습니다.

51초 실제 실행 영상은 준비 화면부터 보고서까지 이어집니다

2026년 7월 31일에는 판매용 CSV_Audit_Cleaner.exe를 새로 실행해 준비 상태부터 다시 녹화했습니다. 동봉 표본을 고르고 order_id를 중복 기준으로 입력한 뒤, 성공 1개·실패 0개와 입력 4행→출력 2행을 확인하고 생성된 HTML 보고서까지 열었습니다.

영상은 한 고정 로컬 표본의 결과입니다. 모든 CSV에서 같은 수치가 나온다는 뜻은 아닙니다. 숫자를 직접 대조하려면 공개된 실제 HTML 샘플 보고서도 함께 열어볼 수 있습니다.

먼저 무료 Lite로 자기 CSV를 시험해 보는 편이 안전합니다

무료 Lite판은 CSV당 데이터 행 100개까지 처리하며, 정식판과 같은 방식으로 정리 파일과 감사 보고서를 만듭니다. GitHub 공개 릴리스에서 ZIP과 SHA-256을 확인할 수 있습니다. 압축을 전부 푼 뒤 CSV_Audit_Cleaner_Lite.exe를 실행하면 됩니다.

행 제한 없는 정식판은 일회성 $15이며, 제품 설명 페이지에서 실제 앱 화면과 전후 결과를 먼저 볼 수 있습니다. 별도 제작이나 원격 설정 서비스가 아니라 완성된 다운로드 제품입니다.

확인한 기준

2026년 7월 31일 기준으로 정식판과 Lite판 ZIP을 각각 새 폴더에서 실행하고, 공개 판매본 32개 자동 검사, 4행→2행 표본, 실패 0건, 원본 보존, Lite 101행 제한을 대조했습니다. 공개 GitHub 자산의 크기와 SHA-256도 로컬 원본과 일치하는 것을 확인했습니다. 51초 영상은 판매 EXE를 새 프로세스의 준비 상태부터 실행한 고정 로컬 표본입니다.

댓글

이 블로그의 인기 게시물

뤼튼 무료 범위와 크랙 결제, 무료 AI와 유료 콘텐츠를 나눠 보세요

ChatGPT 대화 기록 삭제와 학습 제외, 임시채팅까지 따로 봐야 합니다