본문 바로가기
개발/파이썬

[파이썬] 파일 읽기 쓰기, utf-8로 encoding하기

by hamcheeseburger 2021. 2. 6.

파이썬으로 파일을 utf-8로 인코딩하여 읽고 쓰는 방법은 매우 간단하다.

1. with 키워드를 쓴 경우

	with open("파일경로", 'wt', encoding='utf-8') as file:
            file.write("login 시각 : " + created_format + "\n")

 

	with open("파일경로", 'rt', encoding="utf-8") as file:
            data = file.read()

2. with 키워드를 쓰지 않은 경우

file = open("파일경로", "rt", encoding="utf-8")
file.close()

 두 가지 방법으로 파일을 읽고 쓸 수 있지만, 두 번째 방법의 경우에는 file을 명시적으로 닫아주어야 한다는 번거로움이 있다. with 키워드를 쓰면 자동으로 파일을 닫아주기 때문에 편리하게 사용하면서도 자원누수를 걱정하지 않아도 된다.

 

 open의 두 번째 파라매터는 전달되는 키워드가 파일을 읽을 것인지, 쓸 것인지를 지정한다.

파일을 쓰려면 'w' 키워드를 쓰는 것이 일반적인데, 'w'는 'wt'(text로 읽기) 와 같은 역할을 한다. 바이너리로 읽고 싶다면 wb'를 파라매터로 전달하면 된다. (read의 경우도 같다)

 

 만약 encoding 옵션이 없이 파일을 read, write하면 어떻게 될까? os의 기본 인코딩을 따르게 되는데 window는 'cp949'로 인코딩을 한다. 이렇게 운영체제의 인코딩 방식을 따르게 된다면, 해당 파일을 다른 운영체제로 옮겼을 때 인코딩 방식이 달라 한글이 깨지는 경우가 종종 발생한다.

필자의 경우는 윈도우에서 생성한 txt 파일을 우분투 리눅스 서버로 전송하여 웹페이지로 띄우는 코드를 작성하고 있었다. 우분투 리눅스는 기본 인코딩 방식이 'utf-8'이기 때문에 위와 같은 코드로 txt 파일을 인코딩 하였다. 

 

이전 댓글