[英]Python: How to read and load an excel file from AWS S3?
我已将一个 excel 文件上传到 AWS S3 存储桶,现在我想在 python 中读取它。 任何帮助,将不胜感激。 这是我迄今为止取得的成就,
import boto3
import os
aws_id = 'aws_id'
aws_secret = 'aws_secret_key'
client = boto3.client('s3', aws_access_key_id=aws_id, aws_secret_access_key=aws_secret)
bucket_name = 'my_bucket'
object_key = 'my_excel_file.xlsm'
object_file = client.get_object(Bucket=bucket_name, Key=object_key)
body = object_file['Body']
data = body.read()
接下来我需要做什么才能读取这些数据并对其进行处理?
花了很多时间在上面,这就是我如何让它工作的,
import boto3
import io
import pandas as pd
import json
aws_id = ''
aws_secret = ''
bucket_name = ''
object_key = ''
s3 = boto3.client('s3', aws_access_key_id=aws_id, aws_secret_access_key=aws_secret)
obj = s3.get_object(Bucket=bucket_name, Key=object_key)
data = obj['Body'].read()
df = pd.read_excel(io.BytesIO(data), encoding='utf-8')
您可以直接从 S3 读取 xls 文件,而无需下载或保存到本地。 xlrd
模块提供了提供原始数据以创建工作簿对象的规定。 以下是代码片段。
from boto3 import Session
from xlrd.book import open_workbook_xls
aws_id = ''
aws_secret = ''
bucket_name = ''
object_key = ''
s3_session = Session(aws_access_key_id=aws_id, aws_secret_access_key=aws_secret)
bucket_object = s3_session.resource('s3').Bucket(bucket_name).Object(object_key)
content = bucket_object.get()['Body'].read()
workbook = open_workbook_xls(file_contents=content)
您可以使用awswrangler.s3.read_excel直接读取 excel 文件。 请注意,您可以将任何 pandas.read_excel() 参数(工作表名称等)传递给它。
import awswrangler as wr
df = wr.s3.read_excel(path=s3_uri)
Python 本身不支持 Excel 文件。 您可以使用大熊猫库大熊猫库 read_excel 功能
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.