본문 바로가기
카테고리 없음

파일과 예외처리

by 돌이@ 2022. 5. 28.

-파일의 기초
일반적으로 크기가 큰 데이터는 파일에 저장
예를 들어 파이썬 프로그램을 사용하여 대규모의 새로운 데이터을 만들었다고 가정한다
프로그램이 종료되면 작업하였던 데이터는 모두 메모리에서 지워진다
빅데이터 시대에서 공공데이터들도 csv 파일형태로 제공한다
메모리는 주기억장치이고 SSD,하드 디스크는 보조 기억 장치이다. 보조기억장치로 데이터가 저장된다.

파일은 보조기억장치에서 문서,소리,그림,동영상과 같은 자료를 모아 놓은 것을 말한다

주기억장치는 메모리를 뜻한다
파일 시스템(FAT)은 보조 기억 장치의 물리적 특성과는 상관없이, 프로그래머에게 동일한 논리적 인터페이스를 제공한다

파일의 논리적 구조
파일 안에는 바이트(8bit)들이 순차적으로 저장되어 있다
파일의 맨 끝에는 EOF(end-of-file)마커가 있음

파일 포인터: 파일의 입출력 동작이 발생하는 위치
파일을 처음으로 열면,
파일 포인터는 파일의 첫 번째 바이트를 가리킨다
파일의 내용을 읽거나 쓰면 파일 포인터는 자동으로 업데이트된다

파일 열고 닫기
<r>: 읽기모드(read mode) 파일의 처음부터 읽는다.
<w>:쓰기모드(write mode) 파일의 처음부터 쓴다. 파일이 없으면 생성된다. 만약 파일이 존재하면 기존의 내용은 지워진다.
<a>:추가모드(append mode) 파일의 끝에 쓴다. 파일이 없으면 생성된다.
<r+>:읽기와 쓰기 모드 파일에 읽고 쓸 수 있는 모드이다. 모드를 변경하려면 seek()가 호출 되어야 한다.

파일에 쓰기
변수의 값을 문자열에 포함시켜서 출력(f-string 사용)
변수의 값을 문자열에 포함시켜서 출력(변환문자 사용)

파일 닫기
파일작업을 마쳤으면 파일을 제대로 닫아야 한다
>close() 메소드 활용
파이썬에는 참조되지 않은 객체를 정리하는 가비지 컬렉션 기능을 가지고 있지만 여기에 너무 의존해서는 안됨=사용이 종료된 파일은 닫는다
파일 참조 중 프로그램이 오류에 의해 종료 시 파일을 닫지 않고 프로그램이 종료될 위험성이 있다

1)파일 닫기.(try..finally 블록 사용)
프로그램 흐름을 중지시키는 예외가 발생하더라도 파일이 올바르게 닫히도록 보장한다

2)자동 파일 닫기 (with) 사용
with 명령문 내의 블록이 종료될 때 파일이 자동으로 닫힘(close()호출 필요 없음)

텍스트 파일 입출력 방법
For-each 구문 활용
readline(): 파일을 한줄씩 읽는 메소드
파일을 문자열들이 저장되어 있는 시퀀스로 가정하면 for-each 활용 가능
파일을 처음부터 다시 읽기 위해서 다음 코드가 가능한가?
-For문이 종료되면?
파일포인트는 FOF로 이동
-두 번 읽기가 가능한가?
이미 파일포인터가 EOF로 갔기에 불가능
파일을 닫고 다시 열어야 함

단어로 분리하기
텍스트 파일을 단어의 리스트로 변경한다면?
split() 메소드 사용(review: 문자열 메소드)

파일 전체 읽기
텍스트가 들어있는 파일을 한번에 다 읽기
read() 메소드 활용: 단일 문자열로 읽기
readlines() 메소드 활용: 문자열의 시퀀스로 읽기
파일이 무척 크다면 이들 방법은 많은 양의 메모리를 필요로 함
입력값이 있을 때
read()매소드 활용: 입력값(문자의 개수)를 제공하면 일부 읽기 가능
문자 인코딩(유니코드 사용시)
영문자 처리(아스키코드)
세계문자 처리(유니코드)
대표적인 인코딩은 UTF-8
각 문자를 1개에서 4개의 바이트로 인코딩 함