관리 메뉴

FU11M00N

[Python] write() byte, str 타입 에러 본문

Programming/Python

[Python] write() byte, str 타입 에러

호IT 2020. 10. 17. 20:18

 

사진 1-1 에러 사진

 

칼리 리눅스에서 censys를 공부하던 도중 어떠한 사이트를 html화 시켜서 가져오는 명령어를 입력하였는데

위 와 같은 에러가 발생했습니다.

 

찾아보니 python3에서 open() 내장 함수를 쓸 땐 알아야 할 지식이 있더군요

open() 함수는 기본적으로 UTF-8 인코딩 방법을 사용합니다.

 

python3에는 2가지의 문자 sequence 타입이 있습니다.

 

bytes : raw 8-bit

str : Unicode 

 

레거시 느낌의 방식이 bytes이고 요즘 쓰는 방식은 str 타입이라고 생각하면 될 것 같네요.

 

Unicode는 바이너리 데이터로 표현 하는 방법 중 가장 많이 쓰이는 방법이 UTF-8 인코딩 방식이라고 합니다.

 

만약, Unicode --> Binary로 바꾸고 싶다면 encode( ) 함수를 사용해야 하고,
Binary --> Unicode로 바꾸고 싶다면 decode( ) 함수를 사용해야 합니다.

 

그러하여 해결방안은

 

 

사진 1-2 해결방안

 

open(filename, "w") 기존의 모드가 "w" 이었던 것을 "wb"로 수정해주면 됩니다.

 

"w" 모드는 문자를 쓰는 모드이고 

"wb" 모드는 바이너리를 쓰는 모드입니다.

 

사진 1-3 성공 결괏 값

 

그럼 성공적으로 결과 값이 나옵니다.

모자이크 때문에 제대로 된 결괏 값을 볼 수 없으시겠지만, 아까와 같은 에러가 안 뜨고 해결이 됐습니다!

 

 

 

 

ref https://signing.tistory.com/17

Comments