es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Añadiendo líneas a un script de Python desde un archivo

Supongamos que tenemos un bucket de s3 llamado test y una carpeta llamada files dentro de ese bucket. En esta carpeta hay dos archivos de texto: file1.txt y file2.txt.

El archivo file1.txt contiene la siguiente línea: a = a+6.

El archivo file2.txt contiene la siguiente línea: a = a*11.

Si tenemos un archivo de Python llamado test.py con el siguiente código:

a = 2

¿Cómo agregaríamos las líneas de file1.txt y file2.txt para que test.py se vea así?

a = 2
a = a+6
a = a*11

¿Sería algo como lo siguiente?

import boto3
s3 = boto3.resource('s3')
bucket = "test"
key = "files"
obj = s3.Object(bucket, key)
a = 2
obj.get()['Body'].read().decode('utf-8')
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    No, el código que has proporcionado solo recupera el contenido de la carpeta files del cubo test. Para agregar las líneas de file1.txt y file2.txt a test.py, deberías abrir cada archivo y leer su contenido, luego agregar ese contenido a test.py utilizando las funciones open() y write(). Aquí tienes un ejemplo de código que logra esto:

    import boto3
    
    s3 = boto3.resource('s3')
    bucket_name = 'test'
    folder_name = 'files'
    
    # Recupera el contenido de file1.txt y file2.txt
    file1_contents = s3.Object(bucket_name, f'{folder_name}/file1.txt').get()['Body'].read().decode('utf-8')
    file2_contents = s3.Object(bucket_name, f'{folder_name}/file2.txt').get()['Body'].read().decode('utf-8')
    
    # Agrega el contenido de file1.txt y file2.txt a test.py
    with open('test.py', 'a') as f:
        f.write(f'\n{file1_contents}\n{file2_contents}\n')
    

    Este código recupera el contenido de file1.txt y file2.txt utilizando sus claves de objeto de S3, luego agrega ese contenido a test.py utilizando la función write() dentro de una declaración with. La declaración with cierra automáticamente el archivo después de escribir en él.

Comments are closed.