Я написал программу в python в Lambda, чтобы прочитать CSV из S3, а затем добавить некоторую информацию и сохранить ее в другом CSV в S3.
Начальная строка в исходном CSV выглядит следующим образом :
2020-04-23 00:00:00,pass,7481.15000000,7480.12000000
Когда я пытаюсь прочитать, добавить некоторую информацию и сохранить ее во втором CSV-файле в S3, это выглядит так:
"b'[2020-04-21 00:00:00,pass],[2020-04-21 00:00:00,pass],[2020-04-21 00:00:00,pass],[2020-04-22 00:00:00,pass,7126.77000000,7126.56000000]\r'",b'',"[b'2020-04-23 00:00:00,pass,7481.15000000,7480.12000000\r', b'']"
Так что, очевидно, с b'
и \r''b''
Код выглядит следующим образом:
def fetch_data_from_s3(filename):
s3 = boto3.client('s3')
csvfile = s3.get_object(Bucket='thisbuckername', Key=filename)
csvcontent = csvfile['Body'].read().split(b'\n')
return csvcontent
def write_data_to_s3(filename, row):
s3 = boto3.client('s3')
csvio = io.StringIO()
writer = csv.writer(csvio)
writer.writerow(row)
s3.put_object(Body=csvio.getvalue(), ContentType='text/csv', Bucket='thisbucketname', Key=filename)
csvio.close()
def lambda_handler(event, context):
historical = fetch_data_from_s3('compiled.csv')
last = fetch_data_from_s3('original.csv')
historical.append(last)
write_data_to_s3('compiled.csv', historical)
Что-то не так с кодировкой? Спасибо!