파일, 락, 네트워크 연결은 사용 뒤 반드시 닫아야 하는 자원이다. `with`는 블록이 어떻게 끝나도 정리 코드를 실행한다.
from pathlib import Path
path = Path("data") / "moves.txt"
path.parent.mkdir(parents=True, exist_ok=True)
with path.open("w", encoding="utf-8") as file:
file.write("초 74-73\n")읽을 때도 `with path.open("r", encoding="utf-8")`를 쓴다. 큰 파일은 `read()`로 한 번에 올리지 않고 파일 객체를 줄 단위로 순회한다.
`pathlib.Path`는 경로 결합과 파일 작업을 운영체제 독립적으로 표현한다. 문자열에 `/`를 직접 붙이지 않는다. 사용자 입력 경로를 서버의 기준 경로와 합칠 때는 `resolve`한 결과가 허용된 루트 안인지 검사해 경로 탈출을 막는다.
직접 context manager를 만들 때는 `__enter__`와 `__exit__`, 또는 `contextlib.contextmanager`를 사용한다.
댓글
0개아직 댓글이 없습니다.