2 votes

Comment extraire les éléments de csv à json dans S3

  • J'ai besoin de trouver les fichiers csv du dossier
  • Lister tous les fichiers contenus dans le dossier
  • Convertir les fichiers en json et les enregistrer dans le même godet

Fichier csv, comme ci-dessous, il y a beaucoup de fichiers csv.

emp_id,Name,Company
10,Aka,TCS
11,VeI,TCS

Le code est ci-dessous

import boto3
import pandas as pd
def lambda_handler(event, context):
    s3 = boto3.resource('s3')
    my_bucket = s3.Bucket('testfolder')
    for file in my_bucket.objects.all():
        print(file.key)
    for csv_f in file.key:
        with open(f'{csv_f.replace(".csv", ".json")}', "w") as f:
            pd.read_csv(csv_f).to_json(f, orient='index')

Impossible d'enregistrer si vous supprimez le nom du seau, il sera enregistré dans le dossier. Comment sauvegarder le nom du seau ?

1voto

Marcin Points 14295

Vous pouvez vérifier le code suivant :

from io import StringIO

import boto3
import pandas as pd

s3 = boto3.resource('s3')

def lambda_handler(event, context):

    s3 = boto3.resource('s3')

    input_bucket = 'bucket-with-csv-file-44244'

    my_bucket = s3.Bucket(input_bucket)

    for file in my_bucket.objects.all():

        if file.key.endswith(".csv"):

            csv_f = f"s3://{input_bucket}/{file.key}"

            print(csv_f)

            json_file = file.key.replace(".csv", ".json")

            print(json_file)

            json_buffer = StringIO()

            df = pd.read_csv(csv_f)

            df.to_json(json_buffer, orient='index')

            s3.Object(input_bucket, json_file).put(Body=json_buffer.getvalue())            

Votre couche lambda devra avoir :

fsspec
pandas
s3fs

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X