我们是否可以从AWS S3复制图像并将其写入excel文件(S3),而不使用Python本地存储数据?

我们是否可以从AWS S3复制图像并将其写入excel文件(S3),而不使用Python本地存储数据?,python,excel,pandas,amazon-web-services,amazon-s3,Python,Excel,Pandas,Amazon Web Services,Amazon S3,我有一个jpeg图像存储在s3中。 我的方案是创建一个excel文件,并将该图像插入其中,然后使用Python将excel文件加载到s3中,而不在本地存储excel文件。您可以使用xlsxwriter包来完成此操作 import xlsxwriter import pandas as pd import boto3 from io import BytesIO boto_object = boto3.resource('s3',region_name='us-west-2', aws_acce

我有一个jpeg图像存储在s3中。
我的方案是创建一个excel文件,并将该图像插入其中,然后使用Python将excel文件加载到s3中,而不在本地存储excel文件。

您可以使用xlsxwriter包来完成此操作

import xlsxwriter
import pandas as pd
import boto3
from io import BytesIO

boto_object = boto3.resource('s3',region_name='us-west-2', aws_access_key_id=AWS_SERVER_PUBLIC_KEY, aws_secret_access_key=AWS_SERVER_SECRET_KEY)

bucket_object = boto_object.Bucket(bucket_name=XXXX)

img_path = "images/data/sample_image.jpeg" # can be PNG, JPG or BMP

with BytesIO() as output:
    with pd.ExcelWriter(output, engine='xlsxwriter') as writer:

        pandas_dataframe.to_excel(writer, sheet_name='sample_sheetname') #creating a sheet first
        image_obj = bucket_object.Object(img_path)
        response = image_obj.get()
        image_data = BytesIO(response['Body'].read())
        writer.sheets['sample_sheetname'].insert_image('A1',img_path, options = {'x_scale': 0.5,
                                                                   'y_scale': 0.5,
                                                                   'x_offset': 80,
                                                                   'y_offset': 10,'image_data':image_data}) #adding data to existing writer object
    data = output.getvalue()

bucket_object.put_object(Key='<path>/sample_output.xlsx', Body=data)

输出:

您可以使用xlsxwriter包来完成

import xlsxwriter
import pandas as pd
import boto3
from io import BytesIO

boto_object = boto3.resource('s3',region_name='us-west-2', aws_access_key_id=AWS_SERVER_PUBLIC_KEY, aws_secret_access_key=AWS_SERVER_SECRET_KEY)

bucket_object = boto_object.Bucket(bucket_name=XXXX)

img_path = "images/data/sample_image.jpeg" # can be PNG, JPG or BMP

with BytesIO() as output:
    with pd.ExcelWriter(output, engine='xlsxwriter') as writer:

        pandas_dataframe.to_excel(writer, sheet_name='sample_sheetname') #creating a sheet first
        image_obj = bucket_object.Object(img_path)
        response = image_obj.get()
        image_data = BytesIO(response['Body'].read())
        writer.sheets['sample_sheetname'].insert_image('A1',img_path, options = {'x_scale': 0.5,
                                                                   'y_scale': 0.5,
                                                                   'x_offset': 80,
                                                                   'y_offset': 10,'image_data':image_data}) #adding data to existing writer object
    data = output.getvalue()

bucket_object.put_object(Key='<path>/sample_output.xlsx', Body=data)

输出:

是否要使用AWS Lambda进行处理?不在Lamda中,Python在本地运行?是否要使用AWS Lambda进行处理?不在Lamda中,Python在本地运行