python3 부터는 ANSI 기준으로 작성된 파일만 읽을 수 있습니다. 그래서 UTF-8로 작성된 파일은 보통 방법으로 읽을 때 에러가 납니다. 다음과 같이 말이죠.


UnicodeDecodeError: 'cp949' codec can't decode bytes in position ~~~~


그래서 우리가 읽으려는 파일의 인코딩 형식을 변환해주어야 합니다.


1. 리눅스에서 변경하기

블로그에 iconv 에 대한 설명이 있습니다. (http://amornatura.tistory.com/42

그냥 UTF-8에서 cp949(ANSI)로 파일을 변환하면 되기 때문에 다음과 같이 입력해줍니다.


iconv -f UTF-8 -t CP949 -o rename.txt original.txt


간단합니다. 


2. 파이썬3 에서 그냥 읽어오기

사실 윈도우에서 작업하게 되면 다른 프로그램들을 써서 변환해야 하기 때문에 매우 번거롭습니다. 리눅스에서도 많은 양의 파일을 변환하려면 일이죠. (뭐...1분이면 되지만요...ㅎ)


파이썬3 에서 직접 UTF-8 문서를 읽어올 수 있습니다. 자세한 내용은 다음의 링크를 따라가보세요.

(http://www.evanjones.ca/python-utf8.html)


위의 사이트에서 설명해주는 내용을 따라하면, 


import codecs

fileObj = codecs.open( "read.txt", "r", "utf-8" )

u = fileObj.readlines()


for i in u :

print(i)

print("\n")



codecs 라는 라이브러리를 불러와서 파일의 형식을 지정해준 후 읽어옵니다. 읽을 때 read()로 하면 한글자씩, readlines()하면 단위줄로 읽어오죠. 


쉽죠? 

+ Recent posts