我们是否可以从AWS S3复制图像并将其写入excel文件(S3),而不使用Python本地存储数据?
我有一个jpeg图像存储在s3中。我们是否可以从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
我的方案是创建一个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在本地运行