Лямбда: загруженный текстовый файл на S3 с использованием Boto3 выглядит очень из локальной версии - PullRequest
1 голос
/ 04 октября 2019

Я читаю csv из корзины S3 в Lambda, используя python 3. Я делаю небольшую очистку и преобразовываю ее в текстовый файл TSV. Когда я проверяю файл, который хранится локально, открывая файл в python и распечатывая его содержимое, я ожидаю, что мой вывод будет таким. Но когда я смотрю на файл, загруженный на S3, файл очень большой и имеет действительно неожиданное содержимое.

Я попробовал тот же код локально (без загрузки на S3), и файл выглядит хорошо. Я также попытался просто записать данные непосредственно в выходной файл (без добавления даты или чего-либо еще), и на S3 все выглядит хорошо. Когда я добавляю дату в начало каждой строки и загружаю на S3, это выглядит странно.

import csv
import boto3
from datetime import date

def lambda_handler(event, context):
    s3_client = boto3.client('s3')
    for record in event['Records']:
        bucket = record['s3']['bucket']['name']
        key = unquote_plus(record['s3']['object']['key'])
        csvfile = s3_client.get_object(Bucket=bucket, Key=key)
        today=str(date.today())
        infile = today+'_input'
        outfile = today+'_output'
        download_path = '/tmp/{}.csv'.format(infile)
        upload_path = '/tmp/{}.txt'.format(outfile)
        s3_client.download_file(bucket,key,download_path)
        with open(download_path, 'r') as in_f:
            with open (upload_path, 'w') as out_f:
                r = csv.reader(in_f,delimiter=',',quotechar='"')
                w = csv.writer(out_f,delimiter='\t',quoting=csv.QUOTE_MINIMAL)
                for line in r:
                    line.insert(0,today)
                    print(line)
                    w.writerow(line)

        s3_client.upload_file(upload_path,bucket,'newTSV.txt')

ОЖИДАЕМАЯ ЛИНИЯ в TSV:

2019-10-04  U.S. Dollars    HEDGE FUND  MyFund,LLC|23A              1736

АКТУАЛЬНАЯ ЛИНИЯ в TSV:

2019-10-04  "2019-10-04 ""2019-10-04    """"2019-10-04  """"""""2019-10-04  """"""""""""""""2019-10-04  """"""""""""""""""""""""""""""""
...