Programing/Python programming

python - unicodedecodeerror 'ascii' codec can't decode byte

sosal 2015. 9. 4. 21:58
반응형

 

/*

 http://sosal.kr/
 * made by so_Sal
 */

 


파이썬에서 file.readline() 함수 에러가 났다.

 

Traceback (most recent call last):
  File "/mnt/fhgfs/sosal/TCGA/Source/bin/get_integrate_somatics_onlyone.py", line 28, in <module>
    line = PR_file.readline()
  File "/storage/home/sosal/anaconda3/lib/python3.4/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 6028: ordinal not in range(128)

 

 

나는 파일에서 '0xe9' 라는 녀석을 없애보려고 이것저것 노력을 했는데 (물론 hex edit까지 꺼내진 않았지만..)

라인을 제거해도 계속 UnicodeDecodeError가 났다.

 

결국 제거하지 못했단 뜻이지만 ㅋㅋ.. 어차피 저 0xe9라는 녀석은 필요하지 않은 데이터이기 때문에 (필요한 column만 추출하는 parsing 작업중이었다.), 읽기에만 성공한다면 된다! 라는 심정으로 해결방법을 모색해봤다.

 

 

결국 인코딩만 추가해주면 간단하게 끝나는 문제였다

 

PR_file = open(sys.argv[1], encoding='cp437')

 

이렇게 읽으니 저런 알수없는 데이터가 들어있어도 에러없이 잘 읽고 해결됐다. ㅋㅋ

 

굳이 file을 open할때 encoding을 바꿔주는것 말고도 다른 인코딩 설정방법도 있는것 같다.

아래 URL을 참조하시면 이 문제를 해결하는데 도움이 될 것 같다.

 

 

http://stackoverflow.com/questions/21129020/how-to-fix-unicodedecodeerror-ascii-codec-cant-decode-byte

출력에서 같은 에러가 나도 위 URL의 방법으로 해결이 가능하다고 한다.