개발안전 결제자세히
- 패키지 범위 내 수정은 무료입니다.
- 납품 후 3일 이내에 응답하지 않으면 작업이 자동으로 승인됩니다.
결제 시 금액이 예치되며, 작업을 승인해야만 지급됩니다.

결과물 예시
매장 9곳의 월별 매출 파일을 Excel 보고서 하나로 합치기
실행 방법
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO 폴더: sales/2026-10, 파일 9개 발견
2026-11-02 09:14:03 INFO shop-01.csv: 1,284행
2026-11-02 09:14:04 INFO shop-02.xlsx: 967행
2026-11-02 09:14:04 WARN shop-07.csv: 가격 없는 3행 건너뜀 (88, 412, 913번 줄)
2026-11-02 09:14:05 INFO 완료: 10,412행 -> report-2026-10.xlsx ("매출", "합계" 시트)
코드가 아닌 설정으로
매장별 열 이름은 settings.ini에 있어서, 매장이 새로 생기거나 열 이름이 바뀌면 그곳에 한 줄만 고치면 됩니다.
[columns]
date = 날짜, 판매일, 일자
product = 상품, 품목, 상품명
quantity = 수량, 개수, 판매 수량
price = 가격, 단가
코드 일부
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""매장 파일 하나를 읽고 열 이름을 보고서 기준으로 바꿉니다."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: '{name}'에 해당하는 열이 없습니다 (찾은 이름: {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
파일: merge_sales.py(310줄), settings.ini, requirements.txt, 그리고 Python 설치, 스크립트 실행, 로그 메시지별 의미를 설명한 README가 들어 있는 ZIP 압축 파일. 고객이 자신의 컴퓨터에서 직접 실행합니다.
고객: 문구점 9곳을 운영하는 작은 체인. 매장마다 한 달 매출을 CSV나 Excel 파일로 보내는데, 열 이름이 조금씩 다릅니다. 과제: 폴더 안의 모든 파일을 읽고 열을 하나의 형식으로 맞춘 뒤, 전체 매출과 매장별 합계 시트가 담긴 Excel 보고서 하나로 저장하는 스크립트.
고객과 모든 정보는 가상입니다.
서비스 소개
한 페이지씩 따로 온 계약서 스캔본, 고객별로 보내야 하는 300페이지 명세서, PDF 하나로 보내야 하는 서류 묶음. 이 Python 스크립트는 편집기에서 하나하나 클릭할 일을 몇 초 만에 해냅니다. 정하신 순서(이름, 날짜, 목록)로 파일을 합치고, PDF를 한 페이지씩, 정해진 범위로, 또는 책갈피마다 나누며, 프리미엄에서는 Invoice No.처럼 지정한 단어가 있는 페이지에서 자를 수 있습니다. 페이지를 다시 인쇄하지 않고 그대로 복사하므로 품질이 유지됩니다. 작업 내용과 개인 정보가 없는 샘플 파일 한두 개를 보내 주세요. 스크립트는 고객님이 직접 컴퓨터에서 실행합니다. 텍스트를 편집하거나 스캔본을 읽지는 않습니다.
포함 사항
- 받으시는 결과물Python 스크립트, 단계별 안내가 담긴 README, 스탠다드부터는 순서, 범위, 이름이 담긴 설정 파일이 들어 있는 ZIP 압축 파일. 코드는 주문 페이지에서도 볼 수 있습니다.
- 원하는 순서로 합치기이름, 날짜 또는 주신 목록 순으로
- 원하는 방식으로 나누기한 페이지씩, 범위, 책갈피
- 품질 손실 없음페이지를 그대로 복사
- 알아보기 쉬운 파일 이름번호, 페이지 범위 또는 목록의 이름
- 읽기 쉬운 코드주석이 있어 나중에 규칙 변경이 쉬움
진행 방식
- 1작업작업을 설명하고 샘플 PDF 한두 개를 보내 주세요
- 2코드스크립트와 실행 안내서를 작성합니다
- 3시험 실행파일 사본으로 실행해 페이지를 확인하세요
- 4수정패키지 범위 안에서 수정을 요청하고 오류 메시지가 있으면 보내 주세요
준비해 주실 내용
필요한 작업: 어떤 파일을 어떤 순서로 합칠지, 또는 어떻게 나눌지(매 페이지, N페이지마다, 범위, 책갈피, 페이지 속 단어), 결과 파일의 이름. 개인 정보가 없는 샘플 PDF 한두 개 또는 같은 구조에 임의의 내용을 넣은 파일. 단어로 나눈다면 그 단어가 보이는 페이지. 대략적인 파일 수와 페이지 수, 운영 체제: Windows, macOS 또는 Linux.
다음 내용을 여쭤봅니다:
- 합치기, 나누기, 또는 둘 다 차례로?
- 각 부분이 어디서 시작하는지 어떻게 알 수 있나요?
- 파일 이름은 어떻게 정할까요?
- 어디에서 실행하나요?
패키지 비교
안전 결제
주문할 때 결제하지만, 대금은 승인된 작업에 대해서만 지급됩니다.
- 고정 가격결제 후에는 패키지 가격이 변경되지 않습니다.
- 금액 예치결제 시 금액은 예치만 됩니다. 작업을 승인하면 서비스에 지급됩니다.
- 납품 전 검수모든 결과물은 전달되기 전에 품질 검수를 거치며, 승인하기 전에 주문 페이지에서 확인할 수 있습니다.
- 무료 수정패키지에서 허용하는 횟수만큼 요청 사항 범위 내에서 수정을 요청할 수 있습니다.
- 3일 후 자동 승인납품 후 3일 이내에 작업을 승인하거나 수정을 요청하지 않으면 자동으로 승인됩니다. 납품 후 주문 채팅에 메시지를 남기면 주문은 대기 상태가 됩니다. 저희가 답변한 뒤 3일을 다시 시작할 수 있으며, 이 경우 채팅으로 알려 드립니다.
- 재작업 또는 전액 환불결과물이 요청 사항과 맞지 않고 수정으로도 해결되지 않았거나, 작업이 작업 기간의 두 배를 넘겨 지연되면 주문 채팅에 알려 주세요. 작업을 다시 하거나 결제 금액을 전액 환불해 드립니다.
질문과 답변
스캔한 PDF도 단어로 나눌 수 있나요?
아니요. 스캔본은 페이지를 찍은 그림이라 검색할 텍스트가 없습니다. 스캔본을 페이지 번호나 범위로 나누는 것은 잘 됩니다. 단어로 나누려면 프로그램에서 저장한 PDF처럼 실제 텍스트가 있는 파일이어야 합니다.
비밀번호가 걸린 PDF는요?
비밀번호를 아신다면 README에 실행할 때 스크립트에 입력하는 방법이 나와 있으며, 비밀번호는 코드에 절대 쓰지 않습니다. 비밀번호가 없는 파일은 건너뛰고 로그에 기록합니다.
PDF를 압축할 수도 있나요?
파일 구조를 가볍게 압축하는 것은 가능합니다. 스캔본을 크게 줄이려면 안의 그림을 다시 압축해야 해서 품질이 달라집니다. 요청 사항에 적어 주시면 패키지에 맞는지 말씀드리겠습니다.
제 문서를 대신 처리해 주시나요?
아니요. 스크립트는 고객님의 컴퓨터에서 실행하므로 계약서와 명세서가 밖으로 나가지 않습니다. 개인 정보가 없는 샘플만 보내 주세요.
답을 찾지 못하셨나요?


