티스토리 뷰

python

Python 파일 처리

on1ystar 2019. 3. 23. 23:04
728x90
반응형

 

우리가 파일의 내용을 읽고, 쓸 때는 텍스트 형식이지만 사실 파일은 0과 1로 이루어진 이진 데이터다. 즉, 텍스트 파일이든 뭐든 결국 바이너리 파일인 것이고 문자열 정보들이 인코딩되어 바이너리 정보로 바뀌게 된다.

따라서 파일을 읽고 쓰기 위해서는 인코딩 과정이 필요하다.

파이썬에서 사용하는 문자열 규격 코드는 유니코드로, 잘 알려진 UTF-8이 있다. 파이썬이 파일을 읽고 쓸 때 이 유니코드에 매핑된 문자열의 이진 값(bytes or byte array)을 사용한다.

 

파일 처리 방식


 

1. 인코딩 방식을 정한다

2. 데이터를 bytes or byte array 타입으로 바꿔주기 위해 인코딩을 한다.

3. 인코딩한 값으로 파일에 쓴다.(파이썬 내부 함수 이용)

4. 파일을 텍스트로 읽기 위해서는 다시 디코딩을 거쳐야 한다.

만약 텍스트 파일의 경우 따로 인코딩이나 디코딩 작업을 해주지 않아도 파이썬 내부에서 처리해준다.

 

 

open -> File descriptor


 

파일을 읽고, 쓰기 위해서는 먼저 파일을 열어야 한다. 이때 사용하는 파이썬 내부 함수로 open()이 있다.

open(파일 경로, 모드, 인코딩 방식)    ->    파일 디스크립터(FD)

파일 디스크립터는 커널에 파일의 정보가 담겨있는 파일 구초체가 생성되고, 이 구조체에 접근할 수 있는 식별자로 파일 핸들러라고도 한다.

파일 경로 : 파일을 열 경로를 적어준다. 만약 파일의 이름만 스트링으로 적어주면 현재 경로에 있는 파일을 찾아 연다.

만약 파일이 없을 경우 새로운 파일을 생성한다.

모드 : 파일을 처리할 방식을 정한다.

만약 모드를 설정하지 않으면 디폴트로 "텍스트 파일 읽기 모드"로 설정된다.

인코딩 방식 :  보통 encoding="UTF-8" 로 지정한다. (명시해 주지 않아도 내부에서 UTF-8로 설정해 준다)

※파일을 open() 했으면 close() 함수를 이용해 닫아줘야 한다. 구지 닫아주지 않아도 프로그램을 종료할 때 파이썬 내부에서 close()를 호출해 주긴 하지만 나중에 다시 파일에 내용을 쓰고자 할 때 오류가 발생할 수도 있다.

하지만 with as 구문을 이용해 파일을 열면 with 구문 밖으로 나갔을 시에 자동으로 파일을 닫아준다. 따라서 with을 이용해 파일을 여는 것이 바람직하다.

 

 

파일 한 줄씩 읽기


 

read() 함수를 이용해 파일의 모든 내용을 읽어들인다.

이때 split()을 사용해 각 라인별로 끊어 문자열 리스트를 만들 수 있다.

 

readline() 함수를 이용하면 파일을 라인 별로 읽어들일 수 있다.

 

이 방법은 기본적으로 텍스트 읽기 모드로 열린 파일이 매번 각 라인을 읽어서 리턴하는 방법을 스스로가 알고 있다는 점을 이용한 방법이다. 

 

참고 : https://soooprmx.com/archives/9143

728x90
반응형

'python' 카테고리의 다른 글

Python 진법 변환  (0) 2019.03.31
Python 소켓으로 파일 보내기  (1) 2019.03.24
Python 소켓 모듈 사용  (0) 2019.03.17
Python argparse 명령행 인자 받기  (0) 2019.03.17
Python List tip, lambda  (0) 2019.03.13
댓글