Skip to content

원자적 교체 - 안전하게 파일 고치기 ​

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