capstone_backend_v2 / scripts /convert_txt_to_json.py
dongchan21
Fixed LFS tracking for index file and removed unnecessary excels
c9ace58
import json
import os
import sys
import chardet
# βœ… μ™ΈλΆ€μ—μ„œ 파일 경둜λ₯Ό 인자둜 λ°›μŒ
if len(sys.argv) < 2:
raise ValueError("❌ ν…μŠ€νŠΈ 파일 경둜λ₯Ό 인자둜 전달해야 ν•©λ‹ˆλ‹€. 예: python convert_txt_to_json.py data/raw_txt/μƒˆνŒŒμΌ.txt")
TXT_PATH = sys.argv[1]
JSON_PATH = "data/deposit_docs.json"
def read_txt_auto(path):
"""ν…μŠ€νŠΈ 파일 인코딩 μžλ™ 감지 ν›„ λ‚΄μš© 읽기"""
try:
# πŸ” 인코딩 μžλ™ 감지
with open(path, "rb") as f:
raw_data = f.read()
encoding_info = chardet.detect(raw_data)
encoding = encoding_info["encoding"] or "utf-8"
print(f"βœ… 인코딩 감지됨: {encoding}")
return raw_data.decode(encoding)
except Exception as e:
raise RuntimeError(f"TXT λ‘œλ“œ μ‹€νŒ¨: {e}")
# ν…μŠ€νŠΈ λ‚΄μš© 읽기
content = read_txt_auto(TXT_PATH)
# ============================================
# JSON 데이터 생성
# ============================================
# ν…μŠ€νŠΈ νŒŒμΌμ€ 전체 λ‚΄μš©μ„ ν•˜λ‚˜μ˜ λ¬Έμ„œλ‘œ μ²˜λ¦¬ν•˜κ±°λ‚˜,
# ν•„μš”μ— 따라 λ‹¨λ½λ³„λ‘œ λ‚˜λˆŒ 수 μžˆμŠ΅λ‹ˆλ‹€.
# μ—¬κΈ°μ„œλŠ” 전체 λ‚΄μš©μ„ ν•˜λ‚˜μ˜ 'content'둜 μ²˜λ¦¬ν•©λ‹ˆλ‹€.
record = {
"source": os.path.basename(TXT_PATH),
"content": content,
"meta": {
"type": "text_file",
"original_path": TXT_PATH
}
}
# ============================================
# κΈ°μ‘΄ JSON 병합 및 μ €μž₯
# ============================================
if os.path.exists(JSON_PATH):
with open(JSON_PATH, "r", encoding="utf-8") as f:
try:
old_data = json.load(f)
except json.JSONDecodeError:
old_data = []
else:
old_data = []
source_name = os.path.basename(TXT_PATH)
# 기쑴에 같은 파일λͺ…μœΌλ‘œ 처리된 데이터가 μžˆλ‹€λ©΄ 제거 (쀑볡 λ°©μ§€)
filtered_old = [item for item in old_data if item.get("source") != source_name]
# μƒˆ 데이터 μΆ”κ°€
filtered_old.append(record)
os.makedirs(os.path.dirname(JSON_PATH), exist_ok=True)
with open(JSON_PATH, "w", encoding="utf-8") as f:
json.dump(filtered_old, f, ensure_ascii=False, indent=2)
print(f"\nβœ… ν…μŠ€νŠΈ 파일 처리 μ™„λ£Œ: {source_name}")
print(f"πŸ“ μ €μž₯ μœ„μΉ˜: {JSON_PATH}")