TypeError: sequence item 0: expected str instance, datetime.datetime found 해결 방법Trouble shooting2023. 3. 29. 17:22
Table of Contents
반응형
OJT 프로젝트를 진행하는데 boto3로 s3를 조회해서 출력하고
Slack으로 보내는 실습을 진행하다가 다음과 같은 에러가 발생했다.
코드
# boto3 S3 클라이언트 생성
s3 = session.client('s3')
# S3 버킷 리스트 가져오기
response = s3.list_buckets()
# S3 버킷 이름 리스트 생성
bucket_name_list = []
# S3 버킷 리전 리스트 생성
bucket_region_list = []
# S3 버킷 생성 일자 리스트 생성
bucket_create_date_list = []
# 각 버킷의 정보를 출력
for bucket in response['Buckets']:
bucket_name = bucket['Name']
bucket_name_list.append(bucket['Name'])
bucket_create_date_list.append(bucket['CreationDate'])
try:
location = s3.get_bucket_location(Bucket=bucket_name)['LocationConstraint']
bucket_region_list.append(location if location is not None else "Unknown")
except s3.exceptions.ClientError as e:
if e.response['Error']['Code'] == 'AccessDenied':
bucket_region_list.append("AccessDenied")
else:
bucket_region_list.append("Unknown")
에러 코드
TypeError: sequence item 0: expected str instance, datetime.datetime found
실습을 진행하다가 다음과 같은 datetime.datetime found 에러가 발생하였다.
이 에러는 리스트를 문자열로 반환할 때, datetime 객체가 문자열이 아닌 객체이기 때문에 발생하는 에러이다.
해결 방법
# boto3 S3 클라이언트 생성
s3 = session.client('s3')
# S3 버킷 리스트 가져오기
response = s3.list_buckets()
# S3 버킷 이름 리스트 생성
bucket_name_list = []
# S3 버킷 리전 리스트 생성
bucket_region_list = []
# S3 버킷 생성 일자 리스트 생성
bucket_create_date_list = []
# 각 버킷의 정보를 출력
for bucket in response['Buckets']:
bucket_name = bucket['Name']
bucket_name_list.append(bucket['Name'])
creation_date = bucket['CreationDate']
bucket_create_date_list.append(creation_date.strftime("%Y-%m-%d %H:%M:%S"))
try:
location = s3.get_bucket_location(Bucket=bucket_name)['LocationConstraint']
bucket_region_list.append(location if location is not None else "Unknown")
except s3.exceptions.ClientError as e:
if e.response['Error']['Code'] == 'AccessDenied':
bucket_region_list.append("AccessDenied")
else:
bucket_region_list.append("Unknown")
creation_date = bucket['CreationDate']
bucket_create_date_list.append(creation_date.strftime("%Y-%m-%d %H:%M:%S"))
다음과 같이 datetime 객체를 문자열로 반환해주면 된다.
그렇게 하기 위해 strftime() 함수를 사용하였는데
strftime() 함수는 datetime 객체를 지정한 형식에 맞게 문자열로 반환하는 함수이다.
오류가 발생하지 않고 정상적으로 출력이 되는 모습
반응형
'Trouble shooting' 카테고리의 다른 글
@__Evening :: Good Evening
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!