본문 바로가기
관리자

Programming-[Backend]/Python

[TIL] python csv writer StringIO, BytesIO for AWS boto3

728x90
반응형

 

문제상황

 

AWS boto3가 BytesIO로 저장 양식이 정해졌을 때를 상정해서, python의 csv를 import하여 csv 파일을 만들 때 BytesIO를 이용하여 바로 csv.writer를 생성하면 byte 데이터를 넣어줘도 에러가 난다. 

 

data = ["a", "b"]
writer = csv.writer(io.BytesIO())
b_data = [str(ch).encode() for ch in data]
writer.writerow(b_data)

 

원인

AWS boto3는 BytesIO로 입력을 받는데 csv는 writer로 StringIO만 받기 때문이다.

 

 

해결책

converting 과정을 추가한다.

 

data = ["a", "b"]
str_buffer = io.StringIO()
writer = csv.writer(str_buffer)
writer.writerow(data)

io.BytesIO.write(str_buffer.getvalue().encode('utf-8'))

 

 

참고

https://stackoverflow.com/questions/57520106/writing-directly-into-binary-mode-with-csv-writer

728x90
반응형