개념 사전 · 개념
Python 파일·JSON·경로 처리
파이썬 파일 입출력 · Python I/O
파일 처리는 경로에서 바이트를 읽고 쓰는 I/O와 그 바이트를 텍스트· 등의 구조로 해석하는 단계를 포함한다. 파일 모드·인코딩·현재 위치·자원 수명을 분리하면 파일이 존재해도 처리에 실패하는 이유를 설명할 수 있다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- 파일의 생성·조회·덧붙이기와 읽기 위치를 관리한다.
- bytes와 str 사이 인코딩 경계를 명시한다.
- ·를 전용 파서로 해석하고 경로·입력 크기·완료 상태를 관리한다.
02어떤 순서로 동작하나
- 경로·모드 선택
현재 작업 디렉터리와 경로 기준, r·w·a·b 등 필요한 모드를 정한다.
- 파일 열기
OS가 경로·권한을 검사해 열린 파일을 제공하고 이 바이너리 또는 텍스트 계층을 구성한다.
- 읽기·해석
바이트를 읽고 지정 codec으로 해독한 뒤 · 구조와 업무값을 검사한다.
- 정리·반영
with 등의 경계에서 스트림을 닫고 쓰기 결과를 반영한다. flush·close와 영속 매체 보장은 같은 조건이 아니다.
03먼저 알아둘 용어와 구성요소
- 은 객체·배열·문자열·수·논리값·null을 표현한다.
- .load는 파일 객체에서, .loads는 문자열에서 읽는다.
- 는 구분자가 문자열 내부에 들어가는 경우와 줄바꿈 인용 규칙이 있으므로 단순 split(",")보다 모듈을 사용하는 편이 구조에 맞다.
- 경로를 문자열 덧셈으로만 만들기보다 의 / 연산으로 요소를 연결하면 구분자와 가독성을 관리하기 쉽다.
- 같은 파일 시스템의 임시 파일에 완성된 내용을 쓰고 적절히 닫은 뒤 os.replace로 바꾸는 패턴은 이름 교체의 원자성을 활용한다. 다만 전원 장애 지속성, 권한·소유권 보존, 두 작성자의 경쟁까지 모두 해결하는 것은 아니다.
- 신뢰할 수 없는 pickle 자료는 읽는 과정에서 코드가 실행될 수 있어 일반 외부 입력 형식으로 사용하지 않는다.
04예제로 따라가기
- 문자열 '가A'는 두 문자지만 로 네 바이트이므로 한 바이트 읽기가 한 문자 읽기와 같지 않다.
- read(2) 뒤 다시 read하면 일반적으로 현재 위치부터 읽는다. 같은 파일 이름을 새로 여는 동작과 열린 스트림을 재사용하는 동작을 구별한다.
- 설정 을 임시 파일에 완성한 뒤 같은 파일 시스템에서 이름을 교체하면 읽는 쪽에 중간 쓰기를 노출하는 문제를 줄일 수 있다.
05혼동하기 쉬운 점과 확인 기준
- errors="ignore"로 모든 깨진 바이트를 버리면 로그 증거가 사라질 수 있다.
- 외부 입력의 경로를 다룰 때는 ../와 심볼릭 링크 등이 의도한 디렉터리 경계를 벗어나는지도 별도 문제로 고려한다.
- 파일 크기와 중첩 깊이, 필수 필드도 제한해 잘못된 입력으로 자원이 과도하게 소비되지 않도록 한다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.