Tengo 3 cubos 1.commonfolder 2.jsonfolder 3.csvfolder .
La carpeta común tendrá archivos json y csv
necesita copiar todos los archivos csv a csvfolder
necesita copiar todos los archivos json a la carpeta json
El código está debajo para obtener todos los archivos de la commonfolder Cómo copiar después de eso
import boto3 s3 = boto3.client('s3') def lambda_handler(event, context): #List all the bucket names response = s3.list_buckets() for bucket in response['Buckets']: print (bucket) print(f'{bucket["Name"]}') #Get the files of particular bucket if bucket["Name"] == 'tests3json': resp = s3.list_objects_v2(Bucket='commonfolder') for obj in resp['Contents']: files = obj['Key'] print(files) if(filename.split('.')[1].lower()=='json'): copyjson(bucket,filename) #copyjson(jsonfolder,filename) elif(filename.split('.')[1].lower()=='csv'): copycsv(bucket, filename) #copycsv(csvfolder,filename)necesita crear una nueva función copyjson,copycsv para hacer este trabajo
Necesita copiar de common-bucket a csv-bucket o json-bucket dependiendo de la extensión del archivo
Puedes comprobar el siguiente código:
import boto3 s3 = boto3.resource('s3') def lambda_handler(event, context): source_bucket = s3.Bucket('01-commonfolder-231') json_bucket = s3.Bucket('02-jsonfolder-3435') csv_bucket = s3.Bucket('03-csvfolder-4552') for object in source_bucket.objects.all(): #print(object) if object.key.endswith('.json'): print(f"{object.key} to json bucket") copy_object = json_bucket.Object(object.key) copy_object.copy({'Bucket': object.bucket_name, 'Key': object.key}) elif object.key.endswith('.csv'): print(f"{object.key} to csv bucket") copy_object = csv_bucket.Object(object.key) copy_object.copy({'Bucket': object.bucket_name, 'Key': object.key})Probé esto usando mis propios cubos de muestra con archivos de prueba:
aaa.json to json bucket bbbbb.csv to csv bucket bbbbb.json to json bucket hhhh.csv to csv bucketPuedes usar el método move() de shutil :
from shutil import move from glob import glob common_folder = 'C:\\Users\\User\\Desktop\\commonfolder\\' csv_folder = 'C:\\Users\\User\\Desktop\\csvfolder\\' json_folder = 'C:\\Users\\User\\Desktop\\jsonfolder\\' for csv in glob(common_folder+"*.csv"): move(csv, csv_folder) for json in glob(common_folder+"*.json"): move(json, json_folder)