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
반응형
'Programming-[Backend] > Python' 카테고리의 다른 글
[TIL] prviate, public 메서드 테스트 기준, Exception 테스트 기준 (0) | 2023.09.07 |
---|---|
[TIL] Deepcopy, dict 순서 유지 (0) | 2023.08.16 |
[TIL] python @patch doesn't work, @patch 작동 안함. mock (1) | 2023.03.21 |
[링크] 파이썬 assert, raise 차이 (0) | 2023.03.02 |
웹 스크래핑, 크롤링- 2. Selenium (0) | 2023.03.01 |