반응형

Python 코드입니다. 간단히 python 실행해서 하위 폴더 (폴더명 cap) 에 있는 cap 파일들을 txt 로 일괄변환 해주는 스크립트입니다.
추억의 01410, 01421...
Python을 이용한 조합형 일괄 변환 스크립트 (convert.py)
아래 코드를 convert.py로 저장하고 실행해 보세요. Node.js 스크립트와 똑같이 cap 폴더를 뒤져서 output 폴더에 구조 그대로 저장해 줍니다.
Python
import os
import re
from pathlib import Path
# 기준 폴더 설정
INPUT_DIR = Path('cap')
OUTPUT_DIR = Path('output')
# ANSI 색상/제어 코드 제거용 정규식
ANSI_REGEX = re.compile(r'\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])')
def convert_cap_files():
if not INPUT_DIR.exists():
print(f"❌ '{INPUT_DIR}' 폴더가 없습니다. 스크립트 위치에 'cap' 폴더를 만들어주세요.")
return
print(f"🚀 변환 시작 (조합형 -> UTF-8): {INPUT_DIR} -> {OUTPUT_DIR}\n")
# rglob으로 하위 폴더의 모든 .cap 파일 재귀 탐색
for filepath in INPUT_DIR.rglob('*.cap'):
# 원본 폴더 구조를 유지하여 출력 경로 계산
rel_path = filepath.relative_to(INPUT_DIR)
out_path = OUTPUT_DIR / rel_path.with_suffix('.txt')
# 출력 폴더 생성
out_path.parent.mkdir(parents=True, exist_ok=True)
try:
# 💡 핵심: cp1361 (조합형)으로 읽기
with open(filepath, 'r', encoding='cp1361', errors='replace') as f:
text = f.read()
# 이야기 특유의 ANSI 제어 문자(색상 등) 제거
clean_text = ANSI_REGEX.sub('', text)
# UTF-8 텍스트로 저장
with open(out_path, 'w', encoding='utf-8') as f:
f.write(clean_text)
print(f"✅ 변환 완료: {rel_path}")
except Exception as e:
print(f"❌ 변환 실패 ({filepath}): {e}")
print("\n🎉 모든 작업이 완료되었습니다.")
if __name__ == '__main__':
convert_cap_files()
🚀 실행 방법
터미널에서 아래 명령어만 입력하시면 됩니다.
Bash
python convert.py
이 코드는 과거 90년대 하이텔, 천리안, 나우누리 등에서 갈무리했던 조합형 한글 데이터의 텍스트와 레이아웃을 깨짐 없이 정확하게 현대의 UTF-8로 살려낼 것입니다.
반응형