python - unicodedecodeerror 'ascii' codec can't decode byte
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을 참조하시면 이 문제를 해결하는데 도움이 될 것 같다.
출력에서 같은 에러가 나도 위 URL의 방법으로 해결이 가능하다고 한다.