如何在AWS Wrangler中读取S3中excel表格的表格名称



我有一张excel表,放在S3中,我想读取excel表的表名。我已经使用awswrangler.s3.read_excel(路径(与aws wrapper一起阅读了excel表如何使用Python使用AWS Wrangler读取表单名称?

我不确定你能在牧马人中做到,或者至少我还没能弄清楚。您可以使用Wrangler将工作表下载到一个临时文件,然后使用pyxlsb/openpyxl(同时使用两者来覆盖所有格式(:

from openpyxl import load_workbook
from pyxlsb import open_workbook
import awswrangler as wr
import os
import pandas as pd
s3_src = 's3://bucket/folder/workbook.xlsb'
filename = os.path.basename(s3_src)
wr.s3.download(path=s3_src, local_file=filename)
if filename.endswith('.xlsb'):
workbook = open_workbook(filename)
sheets = workbook.sheets
else:
workbook = load_workbook(filename)
sheets = workbook.sheetnames
# Load all sheets into an array of dataframes
dfs = [pd.read_excel(filename, sheet_name=s) for s in sheets]
# Or now that you have the sheet names, load using Wrangler
dfs = [wr.s3.read_excel(s3_src, sheet_name=s) for s in sheets]

您可以提取图纸的名称&将它们作为输入传递给执行提取的另一个进程。

牧马人不支持此功能。熊猫会,但熊猫对aws_lambda玩得不好。

import io
import boto3
import openpyxl
session = boto3.Session()
s3_client = boto3.client('s3')
obj = s3_client.get_object(Bucket=my_bucket, Key=my_key)  
body = obj['Body'].read()
wb = openpyxl.load_workbook(io.BytesIO(body))
sheet_names = wb.get_sheet_names()

根据read_excel((函数的awswrangler文档:

此函数接受任何Pandas的read_excel((参数

大熊猫:

sheet_name:str、int、list或None,默认值为0

所以你可以试试这样的东西:

import awswrangler as wr
wr.s3.read_excel(file_uri,sheet_name=your_sheet)

我目前在AWS Glue中遇到了类似的问题,但还没能让它正常工作。

相关内容

  • 没有找到相关文章

最新更新