원자적 교체 - 안전하게 파일 고치기
update/delete는 파일 내용 일부를 고치는 작업입니다. 그런데 쓰던 중에 프로그램이 꺼지면 파일이 망가질 수 있습니다.
안전한 방법 (임시 파일 + 교체):
python
import os, tempfile
def rewrite_file(path: str, lines: list[str]) -> None:
"""파일을 안전하게 다시 쓰는 함수 (원자적 교체)"""
tmp_path = path + ".tmp" # 1. 임시 파일에 완성본부터 작성
with open(tmp_path, "w", encoding="utf-8") as f:
f.writelines(lines)
os.replace(tmp_path, path) # 2. 완성됐으면 원본과 '순식간에' 교체os.replace는 파일 시스템 수준에서 한 번에 교체되므로, 중간에 꺼져도 원본은 안전합니다. (요구사항: update/delete는 "전체 재작성/임시 파일/원자적 교체(권장)" 등 안정성 고려)
출처: Codyssey-B1/B2-1