TypeError: a bytes-like object is required, not 'str'
이는 바로 3.x에서는 "바이트 스트림 문자열 상수(리터럴)"가 생겼기 때문이라고 한다.
많은 함수들이 기존 문자열 대신 이 바이트 스트림을 사용하고 있다고 한다.
그렇다면 바이트 스트림(Byte-stream)이란 무엇일까?
말 그대로 바이트 단위로 데이터를 주고받는 것을 의미한다. (1 byte = 8bit)
데이터는 사실 모든 것이 다 바이트로 이루어져있다.
텍스트도 바이트, 이미지도 바이트, ...
아래 그림은 byte를 사용하여 텍스트 데이터를 표현한 예제이다.
4-byte stream으로 code라는 단어를 표현한 것!
이렇게 바이트로 표현된 데이터를 바이트 그 자체로 주고받거나 또는 저장하는 것을 바이트 스트림이라고 한다.
Python 2에서는 str과 bytes가 동일한 objec로 처리되었다고 한다.
그러나 Python 3에서 부터는 byte objects를 따로 구분짓게 되었다.
그렇다면 문자열과 Byte objects간의 차이는 무엇일까?
1. Byte object는 byte의 sequence인 반면 문자열은 문자의 sequence이다.
2. Byte object는 기계가 읽을 수 있는 형태이고, 문자열은 사람이 읽을 수 있는 형태이다.
3. Byte object는 기계가 읽을 수 있으므로 디스크에 직접 저장할 수 있다.
문자열은 디스크에 저장하기 전에 인코딩이 필요하다.

바이트 객체의 사용법은 간단하다.
문자열 객체 앞에 byte를 의미하는 b만 붙여주면 된다.
>>> b = b'hello world'
>>> b
b'hello world'
>>> b == 'hello world'
False
>>> b == b'hello world'
True
만약 바이트 객체를 문자열로 바꾸고 싶으면 .decode(인코딩 타입)를 해주면 된다.
반대로 문자열을 바이트 객체로 바꾸고 싶으면 .encode(인코딩 타입)을 해주면 된다.
>>> s = b.decode('utf-8')
>>> s
'hello world'
>>> s.encode('utf-8')
b'hello world'
잘못 된 부분이 있거나 궁금한 점이 있으면 언제나 댓글 부탁드립니다!
참고자료)
[Python] 버전2에서 버전3으로 옮겨갈 때 주의 점 들
파이썬이 1990년 말에 만들어 졌다고 알고 있습니다. (실제 1.0은 1994년에 나왔군요) 거의 25살 청년이 다 되었네요. 적지 않은 나이이지만, 우리나라에서는 비교적 최근에 유명해 졌다고 할 수 있
egloos.zum.com
바이트 Stream과 문자 스트림
Byte Stream은 데이터를 있는 그대로 송수신 하는 Stream. 그리고 이 Byte Stream을 이용하여 문자를 파일에 저장하는 것도 가능하다. 물론 이렇게 저장된 데이터를 자바 프로그램을 이용해서 읽으면 문
story.stevenlab.io
What's A Byte Stream, Anyway? - αlphαrithms
Byte streams are a sequence of bytes used by programs to input and output information. The terms byte stream and octet-stream are both used somewhat synonymously, though octet streams are common among networking terminology. Table of Contents show 1 Bits
www.alpharithms.com
Byte Objects vs String in Python - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.
www.geeksforgeeks.org
'Programming > Python' 카테고리의 다른 글
[sklearn] Target is multiclass Error 해결 (0) | 2022.01.18 |
---|---|
[Pandas] DataFrame 모든 행, 열 출력하기 (0) | 2021.12.01 |
[Python] max 내장 함수와 선택인자(key, default) (0) | 2021.12.01 |
[Pandas] categorical data type(범주형 데이터 타입)이란? (category datatype 사용 예제, pandas.Series.cat 사용법) (0) | 2021.11.29 |
PyG 란? (0) | 2021.11.16 |