У меня есть список списков, которые я хочу сохранить в s3.
Первоначально, когда я сохранил их локально, я преобразовал их в CSV, как это:
from csv import reader, writer
words_list = [['here', 'are', 'some', 'words']['these', 'are', 'in', 'a', 'list']['i', 'love', 'lists']]
# Save list of words list
with open("data/words.csv", "w") as f:
wr = csv.writer(f)
wr.writerows(words_list)
# Retrieve list of words list
with open("data/words.csv", 'r') as read_obj:
csv_reader = reader(read_obj)
words_list = list(csv_reader)
Я могу сохранить CSV-версию списка списков в s3, я думаю, с помощью этого, который просто берет CSV, который я уже сохранил локально:
import boto3
session = boto3.Session(
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key
)
s3 = session.resource('s3')
bucket = 'bucket_name'
path = 'data/words.csv'
key = 'data/words.csv'
s3.meta.client.upload_file(key, bucket, path)
Однако я не смог понять, как прочитать CSV обратно и преобразовать его в исходный список списков. Например, я попробовал это:
# Retrieve from s3
import csv
from io import StringIO
bucket = 'bucket_name'
path = 'data/words.csv'
client = boto3.client('s3',
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key
)
csv_obj = client.get_object(Bucket=bucket, Key=path)
body = csv_obj['Body']
csv_string = body.read().decode('utf-8')
Но это дает мне строку без ощущения того, где начинаются и заканчиваются отдельные списки, немного как: "here,are,some,words,these,are,in,a,list,i,love,lists"
I Я не предан этому подходу - я был бы рад всему, что позволяет мне сохранять список списков в восстанавливаемом формате в s3. Как мне этого добиться?
Спасибо!