将 openpyxl 与 lambda 一起使用
Using openpyxl with lambda
Python菜鸟来了。我有一个要求,我已经研究了几天了。要求如下。
我有一个 S3 位置,其中有几张 excel 未格式化数据的工作表。我正在编写一个 lambda 函数来格式化并将它们转换为 csv 格式。现在我已经有了这个代码,但它可以在本地机器上运行,我从本地目录中选择 excel 文件,format/transform 并将它们放入目标文件夹。我们正在使用 openpyxl 包进行转换。现在我正在将其迁移到 AWS,但问题来了。源和目标将不是本地目录,而是 s3 位置。
数据转换逻辑太冗长,实在不想重写
有什么方法可以像在本地机器上一样处理这些 excel 文件。
例如,
wb = openpyxl.load_workbook('C:\User\test.xlsx, data_only=True)
如何使用 python 重新创建此语句或它在 lambda 中的作用?
您可以像这样使用 BytesIO 执行此操作:
file = readS3('test.xlsx') # load file with Boto3
wb = openpyxl.load_workbook(BytesIO(file), data_only=True)
readS3()
的实施例如这样:
import boto3
bucket = #bucket name
def readS3(file):
s3 = boto3.client('s3')
s3_data = s3.get_object(Bucket=bucket, Key=file)
return s3_data['Body'].read()
像这样配置 Boto3: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html
Python菜鸟来了。我有一个要求,我已经研究了几天了。要求如下。
我有一个 S3 位置,其中有几张 excel 未格式化数据的工作表。我正在编写一个 lambda 函数来格式化并将它们转换为 csv 格式。现在我已经有了这个代码,但它可以在本地机器上运行,我从本地目录中选择 excel 文件,format/transform 并将它们放入目标文件夹。我们正在使用 openpyxl 包进行转换。现在我正在将其迁移到 AWS,但问题来了。源和目标将不是本地目录,而是 s3 位置。
数据转换逻辑太冗长,实在不想重写
有什么方法可以像在本地机器上一样处理这些 excel 文件。
例如,
wb = openpyxl.load_workbook('C:\User\test.xlsx, data_only=True)
如何使用 python 重新创建此语句或它在 lambda 中的作用?
您可以像这样使用 BytesIO 执行此操作:
file = readS3('test.xlsx') # load file with Boto3
wb = openpyxl.load_workbook(BytesIO(file), data_only=True)
readS3()
的实施例如这样:
import boto3
bucket = #bucket name
def readS3(file):
s3 = boto3.client('s3')
s3_data = s3.get_object(Bucket=bucket, Key=file)
return s3_data['Body'].read()
像这样配置 Boto3: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html