Programming-[Backend]/Python
[TIL] python csv writer StringIO, BytesIO for AWS boto3
컴퓨터 탐험가 찰리
2023. 6. 13. 19:35
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
반응형