Почему файл CSV в S3 пуст после загрузки из Lambda - PullRequest
0 голосов
/ 30 апреля 2020
import os
import csv
import boto3

client = boto3.client('s3')

fields = ['dt','dh','key','value']
row = [dt,dh,key,value]
print(row)

# name of csv file 
filename = "/tmp/sns_file.csv"

# writing to csv file 
with open(filename, 'a',newline='') as csvfile: 
    # creating a csv writer object 
    csvwriter = csv.writer(csvfile)

    # writing the fields 
    csvwriter.writerow(fields) 

    # writing the data row
    csvwriter.writerow(row)
    final_file_name="final_report_"+dt+".csv"
    client.upload_file('/tmp/sns_file.csv',BUCKET_NAME,final_file_name)
    if os.path.exists('/tmp/sns_file.csv'):
        os.remove('/tmp/sns_file.csv')
    else:
        print("The file does not exist")

1 Ответ

0 голосов
/ 30 апреля 2020

Python блок with - это менеджер контекста, который означает, что он будет «очищаться» после выполнения всех операций внутри него.

В контексте файлов «clean» вверх "означает закрытие файла. Любые изменения, которые вы записываете в файл, не будут сохранены на диске, пока вы не закроете файл. Поэтому вам нужно перенести операцию загрузки за пределы блока with.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...